Как получить число типа float из 2 байтов

353
26 мая 2017, 11:17

Имеются 2 байта.(старший байт и младший) Как получить из них число типа float.

Answer 1

Любые 4 байта образуют валидное (или специальное) число типа float, так что вы можете дополнять нулями с любых сторон и в любых комбинациях.

Но! .. числа с точкой могут иметь разную длину. Возможно у вас т.н. половинный флоат (half float), записываемый в 2 байтах. См. картинку:

Как было сказано выше, в комментариях, теперь идите читать документацию к своему контроллеру и узнаете что это за 2 байта и как они образуют значение - half float это, или целое с фиксированной точкой, или мантисса/экспонента отдельно, или дробь, или ещё как. Согласно этому, уже смотрите как их надо переводить в стандартный float.

Answer 2

По сведениям MSDN порядок байт зависит от архитектуры компьютера. Архитектуру можно узнать, воспользовавшись статическим полем BitConverter.IsLittleEndian

Подробнее читайте раздел комментарии здесь: https://msdn.microsoft.com/ru-ru/library/system.bitconverter%28v=vs.110%29.aspx

Answer 3

Структура чисел описана на Wiki.

Одинарная точно имеет такую структуру:

S-E-F

S — знак, E — показатель степени, I — целая часть, F — дробная часть Так же, как и для целых, знаковый бит — старший.

Размеры полей в битах:

1-8-23

Соответственно, если ты подашь данные в этом порядке, то у тебя все должно получится.

Соответсвенно, ты так же можешь из известного тебе числа получить массив байт и посмотреть, как это все устроено.

READ ALSO
Как полностью ограничить ввод текста в ячейку DataGridView

Как полностью ограничить ввод текста в ячейку DataGridView

Как полностью ограничить ввод текста в ячейку DataGridView

240
Вывод значений в ячейку DGV из коллекции

Вывод значений в ячейку DGV из коллекции

Доброго времени суток) что - то впал в ступор, не могу ничего придумать

248