interpret 4 byte as 32-bit float (IEEE-754)

Scott David Daniels Scott.Daniels at Acm.Org
Sat Jan 15 12:43:45 EST 2005


franzkowiak wrote:
> I've read some bytes from a file and just now I can't interpret 4 bytes 
> in this dates like a real value.  An extract from my program:
> def l32(c):
>     return ord(c[0]) + (ord(c[1])<<8) + (ord(c[2])<<16) +  (ord(c[3])<<24)
> ...
> value = l32(f.read(4))      <---  3F 8C CC CD  should be 1.11
> 
OK, here's the skinny (I used blocks & views to get the answer):

import struct
bytes = ''.join(chr(int(txt, 16)) for txt in '3F 8C CC CD'.split())
struct.unpack('>f', bytes)

I was suspicious of that first byte, thought it might be an exponent,
since it seemed to have too many on bits in a row to be part of 1.11.

-Scott David Daniels
Scott.Daniels at Acm.Org



More information about the Python-list mailing list