2014-02-21 3 views
0

У меня есть несколько двоичных данных (два дополнения), поступающих с акселерометра, и мне нужно преобразовать их в целое число. Есть ли стандартная функция библиотеки, которая делает это, или мне нужно написать собственный код?Преобразование данных двоичного двоичного кода в целое число в объекте-c

Например: Я получаю объект NSData от acclerometer, который при преобразовании в шестнадцатеричный выглядит следующим образом:

C0088001803F 

Который представляет собой объединение 3-х блоков данных 2-байтовые:

x = C008 
y = 8001 
z = 803F 

Сосредоточение на оси х только:

hex = C008 
decimal = 49160 
binary = 1100000000001000 
twos complement = -16376 

есть ли стандартная функция для преобразования из C008 в двойном дополнении непосредственно к -16376?

спасибо.

+0

Использование NSData для преобразования двоичных данных в любые другие ... – Mani

+0

Можете ли вы показать тип двоичных данных? Это пример NSData? Это int []? Это только одно целое или больше одного? –

+0

@ AminNegm-Awad Done. – theDuncs

ответ

3

Что-то вроде:

const int8_t* bytes = (const int8_t*) [nsDataObject bytes]; 

int32_t x = (bytes[0] << 8) + (0x0FF & bytes[1]); 
x = x << 16; 
x = x >> 16; 

int32_t y = (bytes[2] << 8) + (0x0FF & bytes[3]); 
y = y << 16; 
y = y >> 16; 

int32_t z = (bytes[4] << 8) + (0x0FF & bytes[5]); 
z = z << 16; 
z = z >> 16; 

Это предполагает, что значения действительно являются «большой обратный порядок байт», как предложено в этом вопросе.

+0

Привет, HotLicks! Ты да, человек! Спасибо! – theDuncs

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