A bug in struct module on the 64-bit platform?
Fredrik Lundh
fredrik at pythonware.com
Thu Dec 1 12:18:56 EST 2005
Neal Norwitz wrote:
>> I have a user who complained about how "struct" module computes C
>> struct data size on Itanium2 based 64-bit machine.
>
> I wouldn't be surprised, but I don't understand the problem.
>
>> >>struct.calcsize('idi')
>> 16
>> >>struct.calcsize('idid')
>> 24
>> >>struct.calcsize('did')
>> 20
>
> These are what I would expect on a 32 or 64 bit platform. i == int, d
> == float. ints are typically 4 bytes on 64 bit platforms. If you want
> 8 byte integers, you typically need to use longs (format letter is ell,
> l).
except that the 64-bit double should, on most 64-bit platforms, have
64-bit alignment, so
struct.calcsize('idi')
should be 4 bytes integer plus 4 bytes padding plus 8 bytes double plus
4 bytes integer, or 20 bytes.
I'd expect
>>struct.calcsize('idi')
20
>>struct.calcsize('idid')
32
>>struct.calcsize('did')
24
but I have no 64-bit box within reach just now...
or isn't "native alignment" the default?
</F>
More information about the Python-list
mailing list