[issue3481] Length of struct.pack('HL', 1, 1) incorrect (8 instead of 6 bytes)

2008-07-31 Thread Dominique Parolin

New submission from Dominique Parolin [EMAIL PROTECTED]:

Python Versions tested:
Windows 2.5.2 (r252:60911)
Debian Linux Python 2.4.4 

Example:
 import struct
 struct.pack('HL', 1, 1)

results in '\x01\x00\x00\x00\x01\x00\x00\x00'
although '\x01\x00\x01\x00\x00\x00' was expected.

if concatenated or done separately
 struct.pack('H', 1) + struct.pack('L', 1) 

result is as expected '\x01\x00\x01\x00\x00\x00'
or
'\x01\x00' and '\x01\x00\x00\x00' respectively

Error:
Length is 8 where it should be 6
This is as well true for hl, hL and Hl.


Free description:
I could not find another error regarding that, nor any information using
popular search.
Further no explanation found why that might be valid behaviour.

Regards,
Dominique

--
components: Library (Lib)
messages: 70535
nosy: dparolin
severity: normal
status: open
title: Length of struct.pack('HL', 1,1) incorrect (8 instead of 6 bytes)
type: behavior
versions: Python 2.4, Python 2.5

___
Python tracker [EMAIL PROTECTED]
http://bugs.python.org/issue3481
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue3481] Length of struct.pack('HL', 1, 1) incorrect (8 instead of 6 bytes)

2008-07-31 Thread Amaury Forgeot d'Arc

Amaury Forgeot d'Arc [EMAIL PROTECTED] added the comment:

The struct module is correct.
You see here the result of alignment: the address of a long is always
 a multiple of the size of a long.

The struct module mimics the C compiler: a struct { short x; long y;
}, will actually occupy 8 bytes in memory (on a 32bit processor).
There are two padding bytes, that are not used.

--
nosy: +amaury.forgeotdarc
resolution:  - invalid
status: open - closed

___
Python tracker [EMAIL PROTECTED]
http://bugs.python.org/issue3481
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com