Результат неправильный после преобразования гекса в плавающий - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь преобразовать Hex 4991a480 в плавающее с помощью Python 3.6

>>> struct.unpack('!f',bytes.fromhex("4991a480"))
(1193104.0,)

Но это не работает правильно.

Результат, который я хочу получить, равен 1.1931e + 06. Я использовал конверсионный сайт, и он дал ожидаемый результат. Что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Это то же самое, вам просто нужно отформатировать его ( [Python 3]: спецификация формата Mini-Language ) в показатель степени ( [Wikipedia]): IEEE 754 ):

>>> import struct
>>> unpacked = struct.unpack("!f", bytes.fromhex("4991a480"))
>>> unpacked
(1193104.0,)
>>> print("{:e}".format(unpacked[0]))
1.193104e+06

Обратите внимание, что [Python 3]: struct. распаковать ( формат, буфер ) возвращает кортеж .

0 голосов
/ 08 января 2019

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

См. это для получения дополнительной информации о научных обозначениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...