Objective c 如何将NSString转换为十六进制值

Objective c 如何将NSString转换为十六进制值,objective-c,Objective C,我有下面一行代码,我想转换成HexDecimal值 NSString *hexDecimal = @"€"; 我希望结果为hexDecimalValue=0x20acNSScanner可以这样做。下面是一个示例方法: - (NSNumber *)scanHex:(NSString *)aString { NSScanner *sc=[NSScanner scannerWithString:aString]; if(![sc scanString:@

我有下面一行代码,我想转换成
HexDecimal

NSString *hexDecimal = @"€";

我希望结果为
hexDecimalValue=0x20ac

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];
}

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

看起来您有HTML/XML转义实体。您真正想要使用的是核心基础函数CFSTRIGATION转换。 为此,您需要一个NSMutableString并将其桥接到CFMutableString

秘密在于这个CF函数包装了ICU(Unicode国际组件)库的字符串转换

ICU文件将为您提供更多可能的转换。但是对于这个,如果我没记错的话,你想要十六进制Any作为你的变换