Python:将int,hex或binary转换为float

时间:2014-07-22 12:24:32

标签: python

我有以下Modbus响应:16736 我可以将它转换为十六进制和二进制: 十六进制:0x41600000 二进制:0b100000101100000

我应该将Modbus响应转换为float,结果应该是14.0。 如果我转到http://gregstoll.dyndns.org/~gregstoll/floattohex/,则0x41600000转换为14.0。

我尝试了各种struct.unpack kung-fu,但我不能得到14.0。 (在我决定发布另一个转换问题之前,我会阅读所有可以找到的Stackoverflow帖子,但我绝对不明白这是如何工作的)

我错过了什么? 非常感谢。

1 个答案:

答案 0 :(得分:5)

你有一个单精度浮点数,采用big-endian字节顺序:

response = '\x41\x60\x00\x00'
struct.unpack('>f', response)

演示:

>>> import struct
>>> struct.unpack('>f', '\x41\x60\x00\x00')
(14.0,)