Python:将两个整数转换为32位浮点数
我该怎么把两个整数合并成一个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))