Reading binary data

Aaron "Castironpi" Brady castironpi at gmail.com
Wed Sep 10 15:26:42 EDT 2008


On Sep 10, 1:12 pm, Aaron Scott <aaron.hildebra... at gmail.com> wrote:
> Sorry, I had posted the wrong error. The error I am getting is:
>
>      struct.error: unpack requires a string argument of length 12
>
> which doesn't make sense to me, since I'm specifically asking for 11.
> Just for kicks, if I change the line to
>
>      print struct.unpack('3sII', file.read(12))
>
> I get the result
>
>      ('GDE', 33554432, 16777216)
>
> ... which isn't even close, past the first three characters.

Sometimes 'endian' order can cause this.  Try '<3sII' and '>3sII' for
your formats to differentiate.

Also, if your file is not packed the way that 'struct' expects, you
might need to read the string and integers separately.

/Example:

>>> struct.Struct( '3s' ).size + struct.Struct( 'II' ).size
11
>>> struct.Struct( '3sII' ).size
12



More information about the Python-list mailing list