On Jun 1, 6:41 pm, Dennis Lee Bieber <[EMAIL PROTECTED]> wrote: > On Sun, 1 Jun 2008 12:55:45 -0700 (PDT), Mason > <[EMAIL PROTECTED]> 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 > [EMAIL PROTECTED] [EMAIL PROTECTED] > HTTP://wlfraed.home.netcom.com/ > (Bestiaria Support Staff: [EMAIL PROTECTED]) > HTTP://www.bestiaria.com/
Thanks Dennis, I'm OK now. I just sort of dropped the ball for a bit :). Mason -- http://mail.python.org/mailman/listinfo/python-list