Convertire i byte di Floating numeri in virgola in Python

voti
31

Ho un file binario che devo analizzare e sto usando Python. C'è un modo per prendere 4 byte e convertirlo in un unico precisione numero in virgola mobile?

È pubblicato 07/08/2008 alle 21:24
fonte dall'utente
In altre lingue...                            


3 risposte

voti
13

Vorrete lo struct pacchetto.

Risposto il 07/08/2008 a 21:35
fonte dall'utente

voti
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@'
Risposto il 16/09/2008 a 13:59
fonte dall'utente

voti
1

Solo un po 'Inoltre, se si desidera che il numero di un galleggiante come output dal metodo di decompressione, invece di una tupla basta scrivere

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

Se si dispone di più carri allora basta scrivere

>>> [x,y] = struct.unpack('ff', b'\xdb\x0fI@\x0b\x01I4')
>>> x
3.1415927410125732
>>> y
1.8719963179592014e-07
>>> 
Risposto il 13/01/2019 a 10:22
fonte dall'utente

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