On May 16, 2005, at 1:31 PM, Bill Janssen wrote: >> first, second, third, fourth, fifth, ..... = struct.unpack >> ("iiIIiIiiILllfd", data) >> >> It is SO EASY to screw this up. Pick the wrong type code, or >> misalign the type and field. It needs to look more like something >> sane: >> >> class Point(struct.BigEndianStruct): >> x = struct.SInt32() >> y = struct.SInt32() >> > > Why not (for yourself) just add a module which addresses some of this? > As in: > > from unpacking import * > > def getPoint (bvar): > unpack = unpacking(bvar) > x = unpack(S_INT_32) > y = unpack(S_INT_32)
I have (sitting in macholib), but it still doesn't address the shortcomings of the struct module. For example, you can use the struct module to unpack unaligned data types but only if you do it one element at a time and you have to break up all the strings, etc. It can't unpack pascal strings, there's no hooks to plug in for variable length data structures, etc. There's also plenty of data types it doesn't cover (bit vectors, whatever else). Anyway, my point was that the struct module is horrible. It's certainly possible to write something better that may or may not use it internally, but such a thing isn't generally available and certainly isn't in the standard library. -bob _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig