"Scott David Daniels" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> 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.

I believe exponents are typically stored as a positive offset from the 
largest negative exponent.  3F8 is about half of 7FF, so that seems about 
right for an actual exponent of 0.

Terry J. Reedy



-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to