如何将NSString转换为hexaDecimal值

时间:2015-04-12 18:07:03

标签: objective-c

我有以下代码行,我想转换为HexDecimal值。

NSString *hexDecimal = @"€";

我希望结果为hexDecimalValue = 0x20ac

2 个答案:

答案 0 :(得分:0)

NSScanner可以做到这一点。这是一个示例方法:

- (NSNumber *)scanHex:(NSString *)aString {

    NSScanner   *sc=[NSScanner scannerWithString:aString];

    if(![sc scanString:@"&#x" intoString:NULL]) return nil;

    unsigned long long  val;

    if(![sc scanHexLongLong:&val]) return nil;

    return [NSNumber numberWithUnsignedLongLong:val];
}

如果nil没有您列出的aString,或者如果后面没有有效的十六进制字符串,则此方法将返回&#x。否则,它返回一个具有所需值的NSNumber对象。

答案 1 :(得分:0)

看起来你有HTML / XML转义实体。你真正想要使用的是Core Foundation函数CFStringTransform。 为此,您希望拥有一个NSMutableString并将其桥接到CFMutableString。

秘诀就是这个CF函数包装了ICU(International Components for Unicode)库的字符串转换。

ICU文档将为您提供更多可能的转换。但是为此,如果我没记错的话,你想要Hex-Any作为你的变换。