Python: 将整型、十六进制或二进制转换为浮点数

0 投票
1 回答
809 浏览
提问于 2025-04-18 14:15

我有一个Modbus的响应值:16736。我可以把它转换成十六进制和二进制:
十六进制:0x41600000
二进制:0b100000101100000

我需要把这个Modbus的响应值转换成浮点数,结果应该是14.0。如果我去这个网站:http://gregstoll.dyndns.org/~gregstoll/floattohex/,可以看到0x41600000转换成14.0。

我尝试了各种方法来用struct.unpack进行转换,但就是得不到14.0。(在我决定再发一个转换问题之前,我已经看了很多Stackoverflow上的帖子,但我还是不太明白这是怎么回事)

我漏掉了什么呢?非常感谢。

1 个回答

5

你有一个单精度浮点数,它是以大端字节顺序存储的:

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

示例:

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

撰写回答