我有以下代碼行,我想轉換成HexDecimal
值。如何將NSString轉換爲十六進制值
NSString *hexDecimal = @"€";
我想要的結果是hexDecimalValue = 0x20ac
。
我有以下代碼行,我想轉換成HexDecimal
值。如何將NSString轉換爲十六進制值
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];
}
此方法將返回nil
如果aString
沒有&#x
你列出,或者如果後面沒有一個有效的十六進制字符串。否則,它返回一個具有所需值的NSNumber對象。
看起來像你有HTML/XML轉義實體。你真正想使用的是Core Foundation函數CFStringTransform。 爲此,你需要一個NSMutableString並將其連接到CFMutableString。
祕密是這個CF函數包裝了ICU(International Components for Unicode)庫的字符串轉換。
ICU文檔將爲您提供更多可能的轉換。但爲此,如果我記得正確的話,你需要將Hex-Any作爲你的變換。