将32位int值转换为float

use*_*764 1 python floating-point

我有一个程序从一个文件中读取,该文件从该文件中获取4个字节.下面的十六进制应该是0.5浮点数:

00 00 00 3F
Run Code Online (Sandbox Code Playgroud)

我目前有一个显示整数值的方法,并希望将整数从1056964608转换为0.5.这也应该能够处理负浮点数.有人可以向我解释如何在Python 2.6中完成这项工作吗?

dus*_*uff 8

使用struct模块:

>>> struct.unpack("<f", "\x00\x00\x00\x3f")
(0.5,)
Run Code Online (Sandbox Code Playgroud)

如果你真的需要从整数转换,而不是从字节转换,你也可以这样做:

>>> struct.unpack("<f", struct.pack("<I", 1056964608))
(0.5,)
Run Code Online (Sandbox Code Playgroud)

  • 话虽这么说,如果你从输入文件转换为整数,从那里转换为浮点数,那么你就会使事情变得不必要地复杂化.只需直接阅读浮动.确保MARK ANSWERS在接受正确时接受. (4认同)