Μετατροπή Bytes να Floating Point αριθμοί στην Python

ψήφοι
31

Έχω ένα δυαδικό αρχείο που έχω να αναλύσει και να είμαι με τη χρήση Python. Είναι ένας τρόπος για να πάρετε 4 bytes και να το μετατρέψει σε ένα μόνο ακρίβειας αριθμό κινητής υποδιαστολής εκεί;

Δημοσιεύθηκε 07/08/2008 στις 23:24
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
13

Θα ήθελα το struct πακέτο.

Απαντήθηκε 07/08/2008 στις 23:35
πηγή χρήστη

ψήφοι
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
πηγή χρήστη

ψήφοι
1

Λίγο Επιπλέον, εάν θέλετε το ένα αριθμό πλωτήρα ως έξοδος από την unpack μέθοδο αντί για μια πλειάδα απλά γράψτε

>>> [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