How can I combine 2 ints to a single 32bit IEEE floating point ? (each of the 2 ints represent 16 bit) And in the opposite direction: How can I transform a python float into 2 16 bit ints?
(I need this because of modbus protocol - where 2x16 bit registers are treated as single 32 floating point number)
This code takes the 16 bits integers i1 and i2 and convert them to the floating point number 3.14, and vice versa.
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))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With