Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: convert 2 ints to 32 float

Tags:

python

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)

like image 486
GabiMe Avatar asked Jun 17 '10 15:06

GabiMe


1 Answers

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))
like image 69
Alejandro Avatar answered Oct 15 '22 19:10

Alejandro