Konverter Bytes til flyttall i Python

stemmer
37

Jeg har en binær fil som jeg må analysere og jeg bruker Python. Er det en måte å ta 4 byte og konvertere den til en enkel presisjon flyttall?

Publisert på 07/08/2008 klokken 22:24
kilden bruker
På andre språk...                            


3 svar

stemmer
58

>>> 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@'
Svarte 16/09/2008 kl. 14:59
kilden bruker

stemmer
14

Du vil ha den struct pakken.

Svarte 07/08/2008 kl. 22:35
kilden bruker

stemmer
1

Bare litt tillegg, hvis du ønsker et flyttall som output fra utpakking metoden i stedet for et tuppel bare skrive

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

Hvis du har flere flyter så bare skrive

>>> [x,y] = struct.unpack('ff', b'\xdb\x0fI@\x0b\x01I4')
>>> x
3.1415927410125732
>>> y
1.8719963179592014e-07
>>> 
Svarte 13/01/2019 kl. 12:22
kilden bruker

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