struct
Byte order
| Character | Byte order | |:———–|:———–| | @ | native | | = | native | | < | little-endian | | > | big-endian | | ! | network (= big-endian) |
import struct
struct.pack('>h', 1023)
b'\x03\xff'
struct.pack('<h', 1023)
b'\xff\x03'
Format
A format character may be preceded by an integral repeat count. For example, the format string ‘4h’ means exactly the same as ‘hhhh’.
Format | C Type | Python Type | Standard Size |
---|---|---|---|
c | char | bytes of length 1 | 1 |
b | signed char | integer | 1 |
B | unsigned char | integer | 1 |
? | _Bool | bool | 1 |
h | short | integer | 2 |
H | unsigned short | integer | 2 |
i | int | integer | 4 |
I | unsigned int | integer | 4 |
l | long | integer | 4 |
L | unsigned long | integer | 4 |
q | long long | integer | 8 |
Q | unsigned long long | integer | 8 |
f | float | float | 4 |
d | double | float | 8 |
s | char[] | bytes | |
p | char[] | bytes |
pack(">bhl", 1, 2, 3) # b'\x01\x00\x02\x00\x00\x00\x03'
unpack('>bhl', b'\x01\x00\x02\x00\x00\x00\x03') # (1, 2, 3)
struct.calcsize('>bhl') # 7
pack("@ccc", b'1', b'2', b'3') # b'123'
pack("@3s", b'123') # b'123'
Native byte order
sys.byteorder