我正在尝试使用 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。解包(格式,缓冲区)返回一个元组。
打印
的值实际上是您期望的答案,以长格式符号而不是科学符号编写。这里没有问题。
有关科学记数法的更多信息,请参阅此处。