将十六进制转换为浮点数后,结果是错误的



我正在尝试使用 Python 3.6 将十六进制4991a480转换为浮点

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

但它不能正常工作。

我想要得到的结果是 1.1931e+06。我使用了一个转换网站,它给出了我期望的结果。我做错了什么?

这是一回事,你只需要将其格式化([Python 3]:格式规范迷你语言)为指数符号([维基百科]: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。解包格式,缓冲区)返回一个元组

打印

的值实际上是您期望的答案,以长格式符号而不是科学符号编写。这里没有问题。

有关科学记数法的更多信息,请参阅此处。

最新更新