Converter bytes em números de ponto flutuante em Python

votos
31

Eu tenho um arquivo binário que eu tenho que analisar e estou usando Python. Existe uma maneira de ter 4 bytes e convertê-lo em um único precisão número de ponto flutuante?

Publicado 07/08/2008 em 21:24
fonte usuário
Em outras línguas...                            


3 respostas

votos
13

Você vai querer o struct pacote.

Respondeu 07/08/2008 em 21:35
fonte usuário

votos
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@'
Respondeu 16/09/2008 em 13:59
fonte usuário

votos
1

Apenas um pouco disso, se você quiser que o um número flutuante como saída a partir do método de descompactação em vez de uma tupla basta escrever

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

Se você tem mais carros alegóricos, em seguida, basta escrever

>>> [x,y] = struct.unpack('ff', b'\xdb\x0fI@\x0b\x01I4')
>>> x
3.1415927410125732
>>> y
1.8719963179592014e-07
>>> 
Respondeu 13/01/2019 em 10:22
fonte usuário

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