我在将十六进制数转换为NSNumber
时遇到问题。我尝试了很多东西,但我似乎无法解决这个问题。
如下所示,我如何获得NSNumber
?
Byte test[4] = {0x00, 0x00, 0x1D, 0x7A}; // Expected result is 7546
NSData * testData = [NSData dataWithBytes:&test length:4];
// NSNumber = ...
答案 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 十六进制整数表示。