Python 将十六进制转换为浮点后的结果是错误的
我正在尝试使用Python 3.6将十六进制Python 将十六进制转换为浮点后的结果是错误的,python,python-3.x,struct,Python,Python 3.x,Struct,我正在尝试使用Python 3.6将十六进制4991a480转换为浮点 >>> struct.unpack('!f',bytes.fromhex("4991a480")) (1193104.0,) 但它不能正常工作 我想得到的结果是1.1931e+06。我使用了一个转换网站,它给出了我期望的结果。我做错了什么 打印的值实际上是您期望的答案,用长格式符号而不是科学符号书写。这里没有问题 有关科学记数法的更多信息,请参见。这是一样的,您只需要将其()格式化为指数记数法(): 请注
4991a480
转换为浮点
>>> struct.unpack('!f',bytes.fromhex("4991a480"))
(1193104.0,)
但它不能正常工作
我想得到的结果是1.1931e+06。我使用了一个转换网站,它给出了我期望的结果。我做错了什么 打印的值实际上是您期望的答案,用长格式符号而不是科学符号书写。这里没有问题
有关科学记数法的更多信息,请参见。这是一样的,您只需要将其()格式化为指数记数法():
请注意,返回一个元组。结果没有错,只是以不同的格式显示。你要找的是科学记数法。非常感谢你,这对我很有帮助!!
>>> import struct
>>> unpacked = struct.unpack("!f", bytes.fromhex("4991a480"))
>>> unpacked
(1193104.0,)
>>> print("{:e}".format(unpacked[0]))
1.193104e+06