convert binary to float

Mason john.gerald.mason at gmail.com
Sun Jun 1 23:58:43 CEST 2008


On Jun 1, 6:41 pm, Dennis Lee Bieber <wlfr... at ix.netcom.com> wrote:
> On Sun, 1 Jun 2008 12:55:45 -0700 (PDT), Mason
> <john.gerald.ma... at gmail.com> declaimed the following in
> comp.lang.python:
>
> > I have tried and tried...
>
> > I'd like to read in a binary file, convert it's 4 byte values into
> > floats, and then save as a .txt file.
>
> > This works from the command line (import struct);
>
> >     In [1]: f = open("test2.pc0", "rb")
> >     In [2]: tagData = f.read(4)
> >     In [3]: tagData
>
>         Interpreter display of raw object name uses repr()
>
> >     Out[3]: '\x00\x00\xc0@'
>
> > I can then do the following in order to convert it to a float:
>
> >     In [4]: struct.unpack("f", "\x00\x00\xc0@")
> >     Out[4]: (6.0,)
>
> > But when I run the same code from my .py file:
>
> >     f = open("test2.pc0", "rb")
> >     tagData = f.read(4)
> >     print tagData
>
>         Display from a print statement uses str()
>
> > I get this (ASCII??):
> > „@
>
>         Probably not ASCII -- ASCII doesn't have that spanish (?) bottom row
> quote... And a pair of null bytes don't take up screen space.
>
> > I only know how to work with '\x00\x00\xc0@'.
>
> > I don't understand why the output isn't the same. I need a solution
> > that will allow me to convert my binary file into floats. Am I close?
> > Can anyone point me in the right direction?
>
>         Why do you have to /see/ the byte representation in the first
> place... just feed the four bytes to the struct module directly.
>
> import struct
> fin = open("test2.pc0", "rb")
> tagFloat = struct.unpack("f", fin.read(4))[0]
> print tagFloat
> --
>         Wulfraed        Dennis Lee Bieber               KD6MOG
>         wlfr... at ix.netcom.com              wulfr... at bestiaria.com
>                 HTTP://wlfraed.home.netcom.com/
>         (Bestiaria Support Staff:               web-a... at bestiaria.com)
>                 HTTP://www.bestiaria.com/

Thanks Dennis, I'm OK now. I just sort of dropped the ball for a
bit :).

Mason



More information about the Python-list mailing list