我正在尝试使用Python 3.6将十六进制4991a480
转换为浮点数
>>> struct.unpack('!f',bytes.fromhex("4991a480"))
(1193104.0,)
但是它不能正常工作。
我想要得到的结果是1.1931e + 06。我使用了一个转换网站,它给出了我期望的结果。我究竟做错了什么?
答案 0 :(得分:3)
这是同一件事,您只需要将其([Python 3]: Format Specification 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.unpack(format, buffer)返回一个元组。
答案 1 :(得分:2)
打印出的值实际上是您期望的答案,用长格式表示法而不是科学表示法。这里没有问题。
有关科学符号的更多信息,请参见this。