Jonathan Brady wrote:
<[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
Hello,
I was looking at this:
http://docs.python.org/lib/module-struct.html
and tried the following
import struct
struct.calcsize('h')
2
struct.calcsize('b')
1
struct.calcsize('bh')
4
I would have expected
struct.calcsize('bh')
3
what am I missing ?
Not sure, however I also find the following confusing:
struct.calcsize('hb')
3
struct.calcsize('hb') == struct.calcsize('bh')
False
I could understand aligning to multiples of 4, but why is 'hb' different
from 'bh'?
Evidently, shorts need to be aligned at an even address on your
platform. Consider the following layout, where `b' represents the signed
char, `h' represents the bytes occupied by the short and `X' represents
unused bytes (due to alignment.
'bh', a signed char followed by a short would look like:
bXhh -- or four bytes, but 'hb', a short followed by a signed char would be:
hhb (as `char' and its siblings have no alignment requirements)
HTH,
--ag
--
Artie Gold -- Austin, Texas
http://it-matters.blogspot.com (new post 12/5)
http://www.cafepress.com/goldsays
--
http://mail.python.org/mailman/listinfo/python-list