New submission from Mikhail Terekhov <[EMAIL PROTECTED]>: pack/unpack behavior changes unexpectedly depending on the byte order:
l:/tmp >uname -pmiovs Linux #1 SMP 2008-10-14 22:17:43 +0200 x86_64 x86_64 x86_64 GNU/Linux l:/tmp >python python Python 2.5.1 (r251:54863, Aug 1 2008, 00:35:20) [GCC 4.2.1 (SUSE Linux)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import struct import struct >>> struct.pack(">L",0xdeadbeef) struct.pack(">L",0xdeadbeef) '\xde\xad\xbe\xef' >>> struct.pack("L",0xdeadbeef) struct.pack("L",0xdeadbeef) '\xef\xbe\xad\xde\x00\x00\x00\x00' >>> struct.pack("<L",0xdeadbeef) struct.pack("<L",0xdeadbeef) '\xef\xbe\xad\xde' >>> The length of the result above is 8 when no byte order is specified and 4 when it is. Another example: >>> struct.pack("L",0xdeadbeef00000000) '\x00\x00\x00\x00\xef\xbe\xad\xde' >>> struct.pack("<L",0xdeadbeef00000000) '\x00\x00\x00\x00' >>> struct.pack("!L",0xdeadbeef00000000) '\x00\x00\x00\x00' >>> struct.pack("!L",0x12345678deadbeef) '\xde\xad\xbe\xef' >>> struct.pack("L",0x12345678deadbeef) '\xef\xbe\xad\xdexV4\x12' >>> Last results look strange. ---------- components: Library (Lib) messages: 75569 nosy: mmm77 severity: normal status: open title: struct module: pack/unpack and byte order on x86_64 type: behavior versions: Python 2.5 _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue4270> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com