Как преобразовать шестнадцатеричные значения в число с плавающей запятой в python - PullRequest
1 голос
/ 20 марта 2020

У меня есть шестнадцатеричное значение 4396 eccd. Если я преобразую его в число с плавающей запятой, используя какой-либо онлайн-калькулятор , я получу значение как 301.85, что является правильным.

Но когда я конвертирую его с помощью python, я получаю несколько другое значение:

>>> float.fromhex('0x4396eccd')
1133964493.0

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

1 Ответ

2 голосов
/ 20 марта 2020

Чтобы понять, что делает fromhex(), вы можете обратиться к этому: https://python-reference.readthedocs.io/en/latest/docs/float/fromhex.html

Вместо использования fromhex() для шестнадцатеричной строки для числа с плавающей запятой, вам лучше использовать struct модуль.

In python 2.x

>>> import struct
>>> struct.unpack('!f', '41973333'.decode('hex'))[0]
18.899999618530273

In python 3.x Использование:

bytes.fromhex('41973333') вместо '41973333'.decode('hex')

Так будет следующим:

>>> import struct
>>> struct.unpack('!f', bytes.fromhex('41973333'))[0]
18.899999618530273
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...