2015-01-02 19 views
0

我有一個來自BLE器件的16位二進制補碼特性。它的字節數爲0-1,2-3,4-5 ....到16-17包含9個整數。將NSData中的字節解碼爲整數

數據類型是NSData,看起來像這樣:

<faff0100 1b00ab00 daff9141 5603c0fd 06f2> 

我如何提取整數?

+0

這與UTF-16無關,用於對文本進行編碼。您寧可指定您打算使用的語言。 – Codo

+0

嗨,可能我的知識缺乏UTF-16。 我正在使用Objective_C – duck1970

回答

1

你的數據基本上是一個整數的9元素數組。

如果您使用Objective C,則可以通過bytes方法進行訪問。我想檢查一下是否有正確的長度:

int16_t numberArray[9]; 
NSData* data = ...; // your NSData instance 
memcpy(numberArray, [data bytes], 18); 

NSLog(@"First number: %d", numberArray[0]); // bytes 0-1 
NSLog(@"Second number: %d", numberArray[1]); // bytes 2-3 
NSLog(@"Third number: %d", numberArray[2]); // bytes 4-5 
... 
NSLog(@"Ninth number: %d", numberArray[8]); // bytes 16-17 
+0

值得一提的是'長度'方法。 (NSData對象表示的字節數)=> https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/#//apple_ref/occ/instp/NSData/length –

+0

嗨,很好......但。第一個數字很出色。但是,我如何訪問字節12-13的值? – duck1970

+0

對不起,這是一個由9個元素組成的數組。我已經更新了我的答案。 – Codo