2011-11-30 87 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添加一個類別來獲得十六進制表示,並且您的解決方案完美無缺地工作。謝謝您的幫助! –