Omskep Bytes om Floating Point Nommers in Python
-
08-06-2019 - |
Vra
Ek het 'n binêre lêer wat ek het om te ontleed en ek gebruik Python. Is daar 'n manier om 4 grepe neem en skakel dit om na 'n enkele presisie drywende punt nommer?
Oplossing
>>> 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@'
Ander wenke
Net 'n bietjie Verder, as jy wil die 'n float aantal as uitset van die Pak metode in plaas van 'n tuple net skryf
>>> [x] = struct.unpack('f', b'\xdb\x0fI@')
>>> x
3.1415927410125732
As jy meer dryf dan skryf net
>>> [x,y] = struct.unpack('ff', b'\xdb\x0fI@\x0b\x01I4')
>>> x
3.1415927410125732
>>> y
1.8719963179592014e-07
>>>
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow