Newbie lost(new info)
John Roth
newsgroups at jhrothjr.com
Thu Feb 26 15:21:56 CET 2004
"Angelo Secchi" <secchi at sssup.it> wrote in message
news:mailman.150.1077786326.8594.python-list at python.org...
>
> John and Anthon thanks for your help.
> If I did it correctly this is the outcome of the code you asked me to
> try:
>
>
> >from binascii import hexlify
> >inf = file('foo','rb')
> >data = inf.read(1970)
> >for i in range(223):
> > index = i * 4 + 113
> > print hexlify(data[index: index + 4])
>
>
> 46ee3bb4 (I know that this should be 15612852)
Using the following little program:
-----------------------
import binascii
import struct
str1 = "46ee3bb4"
str2 = binascii.unhexlify(str1)
float = struct.unpack(">f", str2)
print float
float2 = struct.unpack("f", str2)
print float2
-----------------------------
I get:
-----------------------------
(30493.8515625,)
(-1.7502415516901237e-007,)
-----------------------------
So it's clearly *not* standard IEEE-488
format, and it's going to require some bit
twiddling to convert.
The last 3 bytes (in big-endian format)
are the fraction. I believe the first bit is
the fraction sign, and the next 7 bits are
the signed exponent in 4-bit chunks.
In other words, the exponent of your
normalized example is -6. The shift
quantity is in hex digits, not bits!
I've verified that this is the actual format
using the Windows Calc applet - handy
sucker when you want to do hex to decimal
conversions.
John Roth
> 00000000 (I know that this should be 0)
> 00000000 (I know that this should be 0)
> 465de39a (I know that this should be 6153114)
> 00000000 (I know that this should be 0)
> 00000000 (I know that this should be 0)
> ...
>
>
> John just to understand what you said, if the file is in IBM propietary
> binary format (EBCDIC ?) I cannot convert it in ASCII using Python?
>
> Thanks again
> Angelo
>
>
>
>
>
>
>
> On Wed, 25 Feb 2004 20:18:47 -0500
> "John Roth" <newsgroups at jhrothjr.com> wrote:
>
> >
> > "Anton Vredegoor" <anton at vredegoor.doge.nl> wrote in message
> > news:403d3b33$0$11500$3a628fcd at reader2.nntp.hccnet.nl...
> > > "John Roth" <newsgroups at jhrothjr.com> wrote:
> > >
> > > >For the rest of it, I'd like to see a *real* hex dump in mainframe
> > > >format. From what you've given us so far I'm not certain whether
> > > >the struct module can convert the data for you.
> > >
> > > Probably what John wants to see is the output of something like
> > > this:
> > >
> > > #one 'line' of data (since it's a binary file there is no real line
> > > #ending convention: a line is just a specific number of bytes long,
> > > #it's important to find out how many exactly)
> > >
> > > from binascii import hexlify
> > > inf = file('somefile','rb')
> > > data = inf.read(1005) #a 113 bytes string + 232 4 bytes floats
> > > L = map(hexlify,data)
> > > print L
> > >
> > > Anton
> >
> > Thank you! I wasn't aware of that module. It looks like it
> > should do exactly what's needed.
> >
> > Although this would probably do instead of the last 2 lines
> > (and excuse the fact that it's real ugly code, as well as
> > untested)
> >
> > for i in range(4):
> > index = i * 32
> > print hexlify(data[index: index+32])
> > for i in range(232):
> > index = i * 4 + 113
> > print hexlify(data[index: index + 4])
> >
> > John Roth
> > >
> > >
> >
> >
> > --
> > http://mail.python.org/mailman/listinfo/python-list
>
>
> --
> ========================================================
> Angelo Secchi PGP Key ID:EA280337
> ========================================================
> Current Position:
> Graduate Fellow Scuola Superiore S.Anna
> Piazza Martiri della Liberta' 33, Pisa, 56127 Italy
> ph.: +39 050 883365
> email: secchi at sssup.it www.sssup.it/~secchi/
> ========================================================
>
More information about the Python-list
mailing list