Преобразование байта с плавающей точкой Числа в Python

голоса
31

У меня есть двоичный файл, который я должен разобрать и я использую Python. Есть ли способ взять 4 байта и преобразовать его в одинарной точности с плавающей запятой?

Задан 07/08/2008 в 23:24
источник пользователем
На других языках...                            


3 ответов

голоса
54

>>> import struct
>>> struct.pack('f', 3.141592654)
b'\xdb\x0fI@'
>>> struct.unpack('f', b'\xdb\x0fI@')
(3.1415927410125732,)
>>> struct.pack('4f', 1.0, 2.0, 3.0, 4.0)
'\x00\x00\x80?\x00\x00\x00@\x00\x00@@\x00\x00\x80@'
Ответил 16/09/2008 в 15:59
источник пользователем

голоса
13

Вы хотите STRUCT пакет.

Ответил 07/08/2008 в 23:35
источник пользователем

голоса
1

Просто немного Кроме того, если вы хотите, число с плавающей запятой в качестве вывода из распаковки методы вместо кортежа просто написать

>>> [x] = struct.unpack('f', b'\xdb\x0fI@')
>>> x
3.1415927410125732

Если у вас есть поплавки, то просто написать

>>> [x,y] = struct.unpack('ff', b'\xdb\x0fI@\x0b\x01I4')
>>> x
3.1415927410125732
>>> y
1.8719963179592014e-07
>>> 
Ответил 13/01/2019 в 12:22
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more