ПОЛУЧИТЬ магнитометр декоративного регистр, как получить NSData(), который выглядит следующим образом:Как конвертировать NSData несколько Ints типа
<00001a1a 4f56f202 00000000 1dfd421b>
Мне нужно, чтобы преобразовать его в INT8, Uint8, Int16, UInt16 в зависимости от который я могу получить.
Источники документов:
s8 dig_x1;/**< trim x1 data */
s8 dig_y1;/**< trim y1 data */
s8 dig_x2;/**< trim x2 data */
s8 dig_y2;/**< trim y2 data */
u16 dig_z1;/**< trim z1 data */
s16 dig_z2;/**< trim z2 data */
s16 dig_z3;/**< trim z3 data */
s16 dig_z4;/**< trim z4 data */
u8 dig_xy1;/**< trim xy1 data */
s8 dig_xy2;/**< trim xy2 data */
u16 dig_xyz1;/**< trim xyz1 data *
Основная проблема заключается в том, как получить доступ к выбранным байтам в NSData, чтобы преобразовать его вручную либо INT8 или UIint16 и т.д.?
Как правило, как подойти к такой проблеме? Должен ли искать способ ручной итерации NSData и конвертировать каждое значение вручную?
Большое спасибо! Еще один крошечный вопрос: используя метод, который вы указали z1, оценивается до 22095, является ли это правдоподобным и возможным значением для z1 в регистре дифферента магнитометра? Кроме того, тем не менее это UInt16 или Int16, значение остается неизменным, правильно ли оно? – DCDC
Меня беспокоит, что независимо от того, настроен ли я на UInt16 или Int16, результат тот же, правильно ли это для дополнения двух? – DCDC
@ DCDC: для чисел в диапазоне 0..32767 нет никакой разницы. - Обычно данные датчика необходимо умножить на некоторое число с плавающей запятой, чтобы получить «реальное» значение, которое должно быть документировано для вашего устройства, нет «общей формулы». –