十六进制到NSNumber

时间:2011-11-30 08:32:12

标签: objective-c type-conversion nsnumber

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

如下所示,我如何获得NSNumber

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

1 个答案:

答案 0 :(得分: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调用此方法,只需扫描过去的a   十六进制整数表示。