Message75569
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. |
|
Date |
User |
Action |
Args |
2008-11-06 17:30:44 | termim | set | recipients:
+ termim |
2008-11-06 17:30:44 | termim | set | messageid: <1225992644.3.0.448967011031.issue4270@psf.upfronthosting.co.za> |
2008-11-06 17:30:43 | termim | link | issue4270 messages |
2008-11-06 17:30:42 | termim | create | |
|