Python:将两个整数转换为32位浮点数

7 投票
2 回答
4544 浏览
提问于 2025-04-16 00:06

我该怎么把两个整数合并成一个32位的IEEE浮点数呢?(这两个整数各自代表16位)

反过来,我又该怎么把一个Python的浮点数转换成两个16位的整数呢?

我需要这样做是因为我在使用modbus协议,在这个协议中,两个16位的寄存器被当作一个32位的浮点数来处理。

2 个回答

0

标准的 struct 模块可以很简单地做到这一点。只要注意你的平台的字节序(endianess),除此之外,使用 pack()unpack() 就可以很顺利地完成这个操作。

5

这段代码的作用是把两个16位的整数i1和i2转换成浮点数3.14,反过来也可以。

from struct import *
# Two integers to a floating point
i1 = 0xC3F5
i2 = 0x4840
f = unpack('f',pack('>HH',i1,i2))[0]

# Floating point to two integers
i1, i2 = unpack('>HH',pack('f',3.14))

撰写回答