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

Grant Edwards grante at visi.com
Sat Jan 15 13:08:54 EST 2005


On 2005-01-15, Scott David Daniels <Scott.Daniels at Acm.Org> 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.

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

Just be careful.  That doesn't work for all 32-bit IEEE floating
point values:

  >>> import struct
  >>> bytes = '\xff\xff\xff\xff'
  >>> print struct.unpack('>f',bytes)
  (-6.8056469327705772e+38,)

0xffffff is _not_ -6.8...e38.  It's a NaN.

IIRC, it doesn't work for infinities either.  I haven't tried
denormals.

-- 
Grant Edwards                   grante             Yow!  It's hard being
                                  at               an ARTIST!!
                               visi.com            



More information about the Python-list mailing list