私は "hello"を意味する "68656C6C6F"のような16進文字列のNSStringを持っています。Objective-CでHEXをNSStringに変換するには?
ここで、16進文字列を "hello"を示す別のNSStringオブジェクトに変換したいとします。どうやってするか ?
私は "hello"を意味する "68656C6C6F"のような16進文字列のNSStringを持っています。Objective-CでHEXをNSStringに変換するには?
ここで、16進文字列を "hello"を示す別のNSStringオブジェクトに変換したいとします。どうやってするか ?
私は確かにこれを行うにははるかに良い、より洗練された方法がありますが、この解決策は実際に動作します。
NSString * str = @"68656C6C6F";
NSMutableString * newString = [[[NSMutableString alloc] init] autorelease];
int i = 0;
while (i < [str length])
{
NSString * hexChar = [str substringWithRange: NSMakeRange(i, 2)];
int value = 0;
sscanf([hexChar cStringUsingEncoding:NSASCIIStringEncoding], "%x", &value);
[newString appendFormat:@"%c", (char)value];
i+=2;
}
+(NSString*)intToHexString:(NSInteger)value
{
return [[NSString alloc] initWithFormat:@"%lX", value];
}
引数値に "68656C6C6F"を入力してください。また、あなたの解決策は正しくないと思います。 – user403015
それは正しくないだけでなく、所有権ルールも破ります。ハッピーデバッグ/リーク修正。 – JustSid
これは最善の答えだと思うが、答えのサンプルコードを追加しました。 – dancl
これはそれを行う必要があります。
- (NSString *)stringFromHexString:(NSString *)hexString {
// The hex codes should all be two characters.
if (([hexString length] % 2) != 0)
return nil;
NSMutableString *string = [NSMutableString string];
for (NSInteger i = 0; i < [hexString length]; i += 2) {
NSString *hex = [hexString substringWithRange:NSMakeRange(i, 2)];
NSInteger decimalValue = 0;
sscanf([hex UTF8String], "%x", &decimalValue);
[string appendFormat:@"%c", decimalValue];
}
return string;
}
16進数の場合は[hex UTF8String]は[hex cStringUsingEncoding:NSASCIIStringEncoding]にする必要があります – valexa
サンプルコードですが、私は(..それはむしろにObjC、Cのミックスより客観-CだとしてinitWithFormatを助言の人々が最良の答えだと思います私は以下をしました
unsigned int resInit = 0x1013;
if (0 != resInit)
{
NSString *s = [[NSString alloc] initWithFormat:@"Error code 0x%lX", resInit];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Initialised failed"
message:s
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
[s release];
}
明確にするために、16進文字列はNSStringか整数ですか?あなたの回答者の中には、それについて混乱するかもしれないと思います。 – nil
16進数の文字列はNSStringであり、 "hello"を表す別のNSStringに変換したいのです – user403015
その情報で質問を更新し、他の誰も同じミスを再度起こさないようにします。 – nil