<---- Idiot. On 11 Jan 2006, at 10:46, Alex Stapleton wrote:
> from struct import pack >>>> pack("B", 1) > '\x01' >>>> pack("BB", 0, 1) > '\x00\x01' >>>> pack("BI", 0, 1) > '\x00\x00\x00\x00\x01\x00\x00\x00' >>>> calcsize("BI") > 8 >>>> calcsize("BB") > 2 > > Why does an unsigned char suddenly become 4 bytes long when you > include an unsigned int in the format string? It's consistent > behaviour but it's incorrect. > > Also. > >>>> calcsize('BL') > 8 >>>> calcsize('BBL') > 8 >>>> calcsize('BBBL') > 8 >>>> calcsize('BBBBL') > 8 >>>> calcsize('BBBBBL') > 12 >>>> pack("BBBL", 255,255,255,0) > '\xff\xff\xff\x00\x00\x00\x00\x00' ####### That's 3 255's and 5(!?!?) > 0's >>>> pack("BBBBL", 255,255,255,255,0) > '\xff\xff\xff\xff\x00\x00\x00\x00' ######### 4 255's and 4 0's! > > Which is all kinds of wrong. > > BL should be 9 > BBL should be 10 > .... > > Python 2.4.1 (#2, May 5 2005, 11:32:06) > [GCC 3.3.5 (Debian 1:3.3.5-12)] on linux2 > > Same behaviour on my PowerBook using > > Python 2.3.5 (#1, Mar 20 2005, 20:38:20) > [GCC 3.3 20030304 (Apple Computer, Inc. build 1809)] on darwin > > sizeof(unsigned long) should be 8 on both of these platforms > sizeof(unsigned char) should be 1 on both as well > > So am I just being stupid and not specifying something I should be? > Or is struct really that broken? > -- > http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list