2013-10-04 264 views
-1

我有十六進制值如以下的數組:如何將十六進制NSData轉換爲十進制數組?

const UInt8 request_MifareID[] = { 
     0x00, 0xCA, 0x01, 0x0A, 0x00 
    }; 

然後我將其傳送到NSData的用於通信:

NSData *data = [[NSData alloc] initWithBytesNoCopy:(UInt8 *)request_MifareID length:5]; 

發送「數據」到服務器並獲得所述服務器響應:

Printing description of resp: 
<ee97562d 02280400 00000000 21074400 9000> 

NSUInteger len = [resp length]; 

Printing description of len: 
(NSUInteger) len = 18 

「resp」也是十六進制格式NSData

現在,我必須將「resp」轉移到十進制數組

我應該怎麼做?

---------------------------------------------- --------編輯

好吧,首先

我需要換乘NSData的哪個服務器的響應(它不是字符串,只能使用數字):

ee97562d 02280400 00000000 21074400 9000 

成什麼樣的目的?

字節?

當我使用

NSString * str = [[NSString alloc] initWithData: resp 
              encoding:NSUTF8StringEncoding]; 

它返回零

+1

在存儲器中的表示不是 「小數」 或 「十六進制數」。它不取決於你如何格式化它。做'NSLog(@「%u」,((uint8_t *)[data bytes])[0])'和voilà。 – 2013-10-04 10:07:33

+0

請參閱關於此主題的另一個SO線程:http://stackoverflow.com/questions/19066246/literal-converstion-nsdata-to-nsstring/19066281#19066281 – nzs

+0

Plz請參閱編輯:) – user2814476

回答

2
int number = 0xe; // or 0x3, 0x6, 0x8, 0x2 

NSString * decimalString = [NSString stringWithFormat:@"%d", number]; 
NSString * hexString = [NSString stringWithFormat:@"%x", number]; 
0
**NSData *data = [NSData dataWithBytes:"FF3C" length:4]; 
NSString *string = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; 
string = [@"0x" stringByAppendingString:string]; 

unsigned short value; 
sscanf([string UTF8String], "%hx", &value); 

NSLog(@"%d", value)** 
+0

字符串將返回零 – user2814476

+0

你試過嗎? – Purva

相關問題