将十六进制字符串转换为长整型

16

是否有任何Cocoa类可以帮助我将NSString中的十六进制值(例如0x12FA)转换为long或NSNumber?似乎像NSNumberFormatter这样的类都不支持十六进制数。

谢谢, 华盈


3
这不是 http://stackoverflow.com/questions/1870475 的重复问题,那个问题是关于将十六进制数字转换为“字符串”的。 - Peter Hosey
3个回答

41

以下是使用NSScanner实现它的简短示例:

NSString* pString = @"0xDEADBABE";
NSScanner* pScanner = [NSScanner scannerWithString: pString];

unsigned int iValue;
[pScanner scanHexInt: &iValue];

11

参见NSScanner的scanHex...:方法。这会让你得到一个原始的值,然后你可以将其封装在NSNumber中。


7

这里有另一种转换方式,将long long int转换为十六进制字符串。
首先将十六进制转换为long long。

NSString* pString = @"ffffb382ddfe";
NSScanner* pScanner = [NSScanner scannerWithString: pString];

unsigned long long iValue2;
[pScanner scanHexLongLong: &iValue2];

NSLog(@"iValue2 = %lld", iValue2);

还有一种方式,将longlong转换为十六进制字符串...

NSNumber *number;
NSString *hexString;

number = [NSNumber numberWithLongLong:iValue2];
hexString = [NSString stringWithFormat:@"%qx", [number longLongValue]];

NSLog(@"hexString = %@", hexString);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接