将十六进制字符串转换为long

时间:2009-12-09 16:06:48

标签: objective-c cocoa string hex

是否有任何Cocoa类可以帮助我将0x12FA等NSString中的十六进制值转换为longNSNumber?它看起来不像NSNumberFormatter这样的类支持十六进制数。

谢谢, 华应

3 个答案:

答案 0 :(得分:41)

以下是使用NSScanner进行操作的简短示例:

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

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

答案 1 :(得分:11)

请参阅NSScanner's scanHex ...:方法。那将为你提供一个可以包装在NSNumber中的原语。

答案 2 :(得分:7)

这是另一种转换方式,一个long long int到hex string。
首先是十六进制到多长。

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

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

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

而另一种方式,longlong to hex string ...

NSNumber *number;
NSString *hexString;

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

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