Convertir Octets Floating Numéros de points en Python

voix
31

J'ai un fichier binaire que je dois analyser et je suis en utilisant Python. Est-il possible de prendre 4 octets et le convertir en un seul nombre à virgule flottante de précision?

Créé 07/08/2008 à 21:24
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
13

Vous voulez que le struct package.

Créé 07/08/2008 à 21:35
source utilisateur

voix
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@'
Créé 16/09/2008 à 13:59
source utilisateur

voix
1

Juste un peu plus, si vous voulez que le numéro de flotteur en sortie de la méthode Déballez au lieu d'un tuple il suffit d'écrire

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

Si vous avez plus de flotteurs, il suffit d'écrire

>>> [x,y] = struct.unpack('ff', b'\xdb\x0fI@\x0b\x01I4')
>>> x
3.1415927410125732
>>> y
1.8719963179592014e-07
>>> 
Créé 13/01/2019 à 10:22
source utilisateur

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