如何将2个整数组合到一个32位IEEE浮点? (2个整数中的每一个代表16位) 而在相反的方向:如何将python浮点数转换为2 16位整数?
(我需要这个因为modbus协议 - 其中2x16位寄存器被视为单个32个浮点数)
答案 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()
的非常直接的应用。