Issue 7189: struct.calcsize returns strange size (original) (raw)

I think the calcsize result is correct here. With the native struct format, padding is included in the struct.

In the second case, there are three bytes of padding after the 'cc' and before the 'i'. This keeps the 'i' aligned on a 4-byte boundary. If you look at the results of struct.pack, you can see the padding explicitly:

Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information.

import struct struct.pack('ihhi35scci', 123456789, 10000, 10000, 321456789, "abcdefghijklmnopqrstuvwxyz123456789", '+', '*', 231456789) "\x15\xcd[\x07\x10'\x10'\x95\n)\x13abcdefghijklmnopqrstuvwxyz123456789+*\x 00\x00\x00\x15\xc0\xcb\r"