blob: c473fc0b0c8abc6c910b18565f0eced1e32d22c0 [file] [log] [blame]
Paul Sokolovskye9db8402014-04-10 03:45:38 +03001import struct
2print(struct.calcsize("<bI"))
3print(struct.unpack("<bI", b"\x80\0\0\x01\0"))
Paul Sokolovsky6582d642014-04-10 22:19:32 +03004print(struct.calcsize(">bI"))
5print(struct.unpack(">bI", b"\x80\0\0\x01\0"))
Paul Sokolovsky0c43cf92014-04-11 03:47:21 +03006
7# 32-bit little-endian specific
8#print(struct.unpack("bI", b"\x80\xaa\x55\xaa\0\0\x01\0"))
Paul Sokolovsky62044602014-04-19 03:13:15 +03009
10print(struct.pack("<i", 1))
11print(struct.pack(">i", 1))
12print(struct.pack("<h", 1))
13print(struct.pack(">h", 1))
14print(struct.pack("<b", 1))
15print(struct.pack(">b", 1))
16
17print(struct.pack("<bI", -128, 256))
18print(struct.pack(">bI", -128, 256))
Paul Sokolovskydf94b712014-05-12 23:45:50 +030019
20print(struct.calcsize("100sI"))
21print(struct.calcsize("97sI"))
22print(struct.unpack("<6sH", b"foo\0\0\0\x12\x34"))
23print(struct.pack("<6sH", b"foo", 10000))
Paul Sokolovsky7a2f1662014-06-25 22:25:53 +030024
25s = struct.pack("BHBI", 10, 100, 200, 300)
26v = struct.unpack("BHBI", s)
27print(v == (10, 100, 200, 300))
Damien Georgebe6d8be2014-12-05 23:13:52 +000028
29# check maximum pack on 32-bit machine
30print(struct.pack("<I", 2**32 - 1))
31print(struct.pack("<I", 0xffffffff))
32
Damien George271d18e2015-04-25 23:16:39 +010033# long long ints
34print(struct.pack("<Q", 2**64 - 1))
35print(struct.pack("<Q", 0xffffffffffffffff))
36print(struct.pack("<q", -1))
37print(struct.pack("<Q", 1234567890123456789))
38print(struct.pack("<q", -1234567890123456789))
39print(struct.pack(">Q", 1234567890123456789))
40print(struct.pack(">q", -1234567890123456789))
41print(struct.unpack("<Q", b"\x12\x34\x56\x78\x90\x12\x34\x56"))
42print(struct.unpack(">Q", b"\x12\x34\x56\x78\x90\x12\x34\x56"))
43print(struct.unpack("<q", b"\x12\x34\x56\x78\x90\x12\x34\xf6"))
44print(struct.unpack(">q", b"\xf2\x34\x56\x78\x90\x12\x34\x56"))
Damien Georgebe6d8be2014-12-05 23:13:52 +000045
46# check maximum unpack
47print(struct.unpack("<I", b"\xff\xff\xff\xff"))
48print(struct.unpack("<Q", b"\xff\xff\xff\xff\xff\xff\xff\xff"))
Damien Georgee5c43622015-04-05 00:03:43 +010049
50# network byte order
51print(struct.pack('!i', 123))