我有以下Modbus响应:16736 我可以将它转换为十六进制和二进制: 十六进制:0x41600000 二进制:0b100000101100000
我应该将Modbus响应转换为float,结果应该是14.0。 如果我转到http://gregstoll.dyndns.org/~gregstoll/floattohex/,则0x41600000转换为14.0。
我尝试了各种struct.unpack kung-fu,但我不能得到14.0。 (在我决定发布另一个转换问题之前,我会阅读所有可以找到的Stackoverflow帖子,但我绝对不明白这是如何工作的)
我错过了什么? 非常感谢。
答案 0 :(得分:5)
你有一个单精度浮点数,采用big-endian字节顺序:
response = '\x41\x60\x00\x00'
struct.unpack('>f', response)
演示:
>>> import struct
>>> struct.unpack('>f', '\x41\x60\x00\x00')
(14.0,)