Paul Sokolovsky | e9db840 | 2014-04-10 03:45:38 +0300 | [diff] [blame] | 1 | import struct |
| 2 | print(struct.calcsize("<bI")) |
| 3 | print(struct.unpack("<bI", b"\x80\0\0\x01\0")) |
Paul Sokolovsky | 6582d64 | 2014-04-10 22:19:32 +0300 | [diff] [blame] | 4 | print(struct.calcsize(">bI")) |
| 5 | print(struct.unpack(">bI", b"\x80\0\0\x01\0")) |
Paul Sokolovsky | 0c43cf9 | 2014-04-11 03:47:21 +0300 | [diff] [blame] | 6 | |
| 7 | # 32-bit little-endian specific |
| 8 | #print(struct.unpack("bI", b"\x80\xaa\x55\xaa\0\0\x01\0")) |
Paul Sokolovsky | 6204460 | 2014-04-19 03:13:15 +0300 | [diff] [blame] | 9 | |
| 10 | print(struct.pack("<i", 1)) |
| 11 | print(struct.pack(">i", 1)) |
| 12 | print(struct.pack("<h", 1)) |
| 13 | print(struct.pack(">h", 1)) |
| 14 | print(struct.pack("<b", 1)) |
| 15 | print(struct.pack(">b", 1)) |
| 16 | |
| 17 | print(struct.pack("<bI", -128, 256)) |
| 18 | print(struct.pack(">bI", -128, 256)) |
Paul Sokolovsky | df94b71 | 2014-05-12 23:45:50 +0300 | [diff] [blame] | 19 | |
| 20 | print(struct.calcsize("100sI")) |
| 21 | print(struct.calcsize("97sI")) |
| 22 | print(struct.unpack("<6sH", b"foo\0\0\0\x12\x34")) |
| 23 | print(struct.pack("<6sH", b"foo", 10000)) |
Paul Sokolovsky | 7a2f166 | 2014-06-25 22:25:53 +0300 | [diff] [blame] | 24 | |
| 25 | s = struct.pack("BHBI", 10, 100, 200, 300) |
| 26 | v = struct.unpack("BHBI", s) |
| 27 | print(v == (10, 100, 200, 300)) |
Damien George | be6d8be | 2014-12-05 23:13:52 +0000 | [diff] [blame] | 28 | |
| 29 | # check maximum pack on 32-bit machine |
| 30 | print(struct.pack("<I", 2**32 - 1)) |
| 31 | print(struct.pack("<I", 0xffffffff)) |
| 32 | |
Damien George | 271d18e | 2015-04-25 23:16:39 +0100 | [diff] [blame^] | 33 | # long long ints |
| 34 | print(struct.pack("<Q", 2**64 - 1)) |
| 35 | print(struct.pack("<Q", 0xffffffffffffffff)) |
| 36 | print(struct.pack("<q", -1)) |
| 37 | print(struct.pack("<Q", 1234567890123456789)) |
| 38 | print(struct.pack("<q", -1234567890123456789)) |
| 39 | print(struct.pack(">Q", 1234567890123456789)) |
| 40 | print(struct.pack(">q", -1234567890123456789)) |
| 41 | print(struct.unpack("<Q", b"\x12\x34\x56\x78\x90\x12\x34\x56")) |
| 42 | print(struct.unpack(">Q", b"\x12\x34\x56\x78\x90\x12\x34\x56")) |
| 43 | print(struct.unpack("<q", b"\x12\x34\x56\x78\x90\x12\x34\xf6")) |
| 44 | print(struct.unpack(">q", b"\xf2\x34\x56\x78\x90\x12\x34\x56")) |
Damien George | be6d8be | 2014-12-05 23:13:52 +0000 | [diff] [blame] | 45 | |
| 46 | # check maximum unpack |
| 47 | print(struct.unpack("<I", b"\xff\xff\xff\xff")) |
| 48 | print(struct.unpack("<Q", b"\xff\xff\xff\xff\xff\xff\xff\xff")) |
Damien George | e5c4362 | 2015-04-05 00:03:43 +0100 | [diff] [blame] | 49 | |
| 50 | # network byte order |
| 51 | print(struct.pack('!i', 123)) |