2015-01-02 2 views
0

У меня есть характеристика дополнения 16 бит 2 от устройства BLE. Он содержит 9 целых чисел в байтовых числах: 0-1, 2-3, 4-5 .... до 16-17.Декодировать байты в 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

Hi, большой ... но. Работает блестяще для первого номера. Но как мне получить доступ к значению в байте 12-13? – duck1970

+0

Извините, это массив из 9 элементов. Я обновил свой ответ. – Codo

Смежные вопросы