On Mon, Dec 5, 2011 at 1:25 AM, Glen Rice <glen.rice.n...@gmail.com> wrote: > In IPython: >>import struct >>struct.calcsize('4s') > 4 >>struct.calcsize('Q') > 8 >>struct.calcsize('4sQ') > 16 > > This doesn't make sense to me. Can anyone explain?
Same thing happens in CPython, and it looks to be the result of alignment. >>> struct.calcsize("4sQ") 16 >>> struct.calcsize("Q4s") 12 The eight-byte integer is aligned on an eight-byte boundary, so when it follows a four-byte string, you get four padding bytes inserted. Put them in the other order, and the padding disappears. (Caveat: I don't use the struct module much, this is based on conjecture.) ChrisA -- http://mail.python.org/mailman/listinfo/python-list