OK, I was wrong with construct! I wrote to the author and he replied. It works!
I am really glad there IS a easy way to handle binary data in python. >>> from construct import * >>> >>> >>> point = Struct("point", ... SNInt32("x"), # Signed, Native byte-order, Int 32 bits ('int' is platform specific, so your int may be different) ... SNInt32("y"), ... ) >>> >>> shape = Struct("shape", ... SNInt32("z"), ... Rename("ap", # without the Rename field, the name would be "point" (Arrays inherit their name from their element) ... Array(2, point) ... ), ... ) >>> >>> c = shape.parse("zzzzxxxxyyyyXXXXYYYY") >>> print c Container: z = 2054847098 ap = [ Container: x = 2021161080 y = 2038004089 Container: x = 1482184792 y = 1499027801 ] >>> -- http://mail.python.org/mailman/listinfo/python-list