Python:将2个int转换为32个float

时间:2010-06-17 15:25:58

标签: python

如何将2个整数组合到一个32位IEEE浮点? (2个整数中的每一个代表16位) 而在相反的方向:如何将python浮点数转换为2 16位整数?

(我需要这个因为modbus协议 - 其中2x16位寄存器被视为单个32个浮点数)

2 个答案:

答案 0 :(得分:3)

此代码采用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))

答案 1 :(得分:0)

标准struct模块可用于轻松完成此操作。请注意您的平台标准,但除此之外,它应该是pack()unpack()的非常直接的应用。