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

Hua*_*ing 16 string cocoa hex objective-c

是否有任何Cocoa类可以帮助我将NSString中的十六进制值转换0x12FAlongNSNumber?它看起来不像任何NSNumberFormatter支持十六进制数的类.

谢谢,华英

ttv*_*tvd 41

以下是使用NSScanner如何执行此操作的简短示例:

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

unsigned int iValue;
[pScanner scanHexInt: &iValue];
Run Code Online (Sandbox Code Playgroud)


Jos*_*zzi 11

请参阅NSScanner的 scanHex ...:方法.这将为您提供可以包装在NSNumber中的原语.


hok*_*kuk 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);
Run Code Online (Sandbox Code Playgroud)

另一方面,longlong到hex string ...

NSNumber *number;
NSString *hexString;

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

NSLog(@"hexString = %@", hexString);
Run Code Online (Sandbox Code Playgroud)