Метод преобразования с плавающей точкой - PullRequest
0 голосов
/ 24 января 2020

Я попытался преобразовать число с плавающей точкой без знака 16 типа, но не смог найти, какие функции или метод разговора мне нужно использовать для этого.

Например, у меня есть 3 десятичных числа, и эти числа пришли с этим шестнадцатеричным значением BD97 >>>>>>> 38,84

3098 >>>>>>> 38,96

8497 >>>>>>>> 38,79

Я верю, что это числа с плавающей точкой половинной точности, но не мог понять, как я могу их преобразовать. Есть ли какая-нибудь помощь по этому вопросу?

Обновление :

Извините, я думаю, что не могу объяснить четко. Значения, которые я написал выше, взяты из некой последовательной шины, но эти значения также выводятся на дисплей. Значение от последовательной шины Unsigned16 (я думаю, что это специальный 16-битный тип данных).

Например, когда я читаю 0xBD97 с шины, дисплей машины показывает 38,84 или когда я читаю 0x3098, дисплей показывает 38,96.

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

Спасибо

1 Ответ

0 голосов
/ 25 января 2020

Данные, считываемые с шины, похоже, не используют формат с плавающей запятой. Основываясь на двух предоставленных элементах данных, представляется, что это целое число, масштабированное с коэффициентом 1000. Мы наблюдаем, что 8497 = 0x9784 = 38788 → 38,79 и что 3098 = 0x9830 = 38960 → 38,96.

...