如何在Objective-C中将HEX转换为NSString?

use*_*015 9 iphone ipad ios

我有一个带有十六进制字符串的NSString,如"68656C6C6F",意思是"你好".

现在我想将十六进制字符串转换为另一个显示"hello"的NSString对象.怎么做 ?

Red*_*ing 21

我确信有更好,更聪明的方法来做到这一点,但这个解决方案确实有效.

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;
}
Run Code Online (Sandbox Code Playgroud)


Mor*_*ast 5

这应该可以做到:

- (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;
}
Run Code Online (Sandbox Code Playgroud)