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> -- http://mail.python.org/mailman/listinfo/python-list