2011-11-30 86 views
3

我在将十六进制数转换为NSNumber时遇到问题。我尝试了很多东西,但似乎无法解决问题。十六进制为NSNumber

如下所示,我如何获得NSNumber

Byte test[4] = {0x00, 0x00, 0x1D, 0x7A}; // Expected result is 7546 
NSData * testData = [NSData dataWithBytes:&test length:4]; 
// NSNumber = ... 

回答

4

NSScanner有以下几种方法

- (BOOL)scanHexFloat:(float *)result 
- (BOOL)scanHexDouble:(double *)result 
- (BOOL)scanHexLongLong:(unsigned long long *)result 
- (BOOL)scanHexInt:(unsigned *)intValue 

,所以你可以扫描一个十六进制的NSString表示。最后一个的讨论:

十六进制整数表示可能可选地前面有 0x或0X。在溢出的情况下跳过过多的数字,因此接收方的位置超过整个十六进制表示。 使用NULL作为intValue调用此方法,以简单地扫描过去的 十六进制整数表示形式。

+0

所以我结束了向NSData添加一个类别来获得十六进制表示,并且您的解决方案完美无缺地工作。谢谢您的帮助! –