interpret 4 byte as 32-bit float (IEEE-754)
g.franzkowiak at web.de
Sat Jan 15 21:11:51 CET 2005
Scott David Daniels schrieb:
> G.Franzkowiak wrote:
>> Scott David Daniels schrieb:
>>> 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) + (ord(c)<<8) + (ord(c)<<16) +
>>>> 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
>> Ok, I the string exist with "mystr = f.read(4)" and the solution for
>> this case is in your line "struct.unpack('>f', bytes)"
>> But what can I do when I want the interpret the content from the
>> Integer myInt (*myInt = 0x3F8CCCCD) like 4-byte-real ?
>> This was stored with an othes system in a binary file to
>> CD CC 8C 3F and now is it in python in value. The conversion is not
>> possible. It's right... one of this bytes is an exponent.
>> I want copy the memory content from the "value address" to "myReal
>> address" and use print "%f" %myReal.
>> Is myReal then the right format ?
>> What can I do with python, in FORTH is it simple
>> ( >f f. )
> If you really want to do this kind of byte fiddling:
> from block import Block, View
> b = Block(4) # enough space for one float (more is fine)
> iv = View('i', b) # getting to it as an integer
> fv = View('f', b) # same memory as floating point
> iv = 0x3F8CCCCD # Here is a sample just using the integer
> print fv
> On an Intel/Amd/Generic "PC" machine, you should get 1.1
> -Scott David Daniels
> Scott.Daniels at Acm.Org
That's good :-))
I'm missing the makefile ;-)
I'm using the other world... right
More information about the Python-list