У меня есть двоичный файл, который я должен проанализировать, и я использую Python. Есть ли способ взять 4 байта и преобразовать его в число с плавающей запятой с одной точностью?
Преобразование байтов в плавающие точки в Python
Ответ 1
>>> import struct
>>> struct.pack('f', 3.141592654)
b'\xdb\[email protected]'
>>> struct.unpack('f', b'\xdb\[email protected]')
(3.1415927410125732,)
>>> struct.pack('4f', 1.0, 2.0, 3.0, 4.0)
'\x00\x00\x80?\x00\x00\[email protected]\x00\[email protected]@\x00\x00\[email protected]'
Ответ 2
Вам понадобится пакет struct.
Ответ 3
Небольшое дополнение, если вы хотите, чтобы число с плавающей запятой выводилось из метода unpack вместо кортежа, просто напишите
>>> [x] = struct.unpack('f', b'\xdb\[email protected]')
>>> x
3.1415927410125732
Если у вас есть больше поплавков, просто напишите
>>> [x,y] = struct.unpack('ff', b'\xdb\[email protected]\x0b\x01I4')
>>> x
3.1415927410125732
>>> y
1.8719963179592014e-07
>>>