Python中struct.pack()和struct.unpack()用法详细说明

Contents
[隐藏]

1.官方文档

https://docs.python.org/3/library/struct.html

2.简介

python中的struct主要是用来处理C结构数据的,读入时先转换为Python的字符串类型,然后再转换为Python的结构化类型,比如元组(tuple)啥的~。一般输入的渠道来源于文件或者网络的二进制流

3.常用函数/方法

  1. struct.pack(formatv1v2)
    功能:打包。将v1,v2等参数的值进行一层包装,包装的方法由format指定。被包装的参数必须严格符合format。最后返回一个包装后的字符串。
  2. struct.unpack(formatbuffer)
    功能:解包。比如使用pack打包的结果,就可以用unpack解包。返回一个由解包数据(type为string的字符串)得到的一个元组(tuple), 即使仅有一个数据也会被解包成元组。其中len(string) 必须等于 calcsize(format),这里面涉及到了一个calcsize函数,请看第3条。
  3. struct.calcsize(format)
    功能:计算format格式所描述的结构的大小

4.格式化字符串

格式化字符串就是上面讲到的format参数。一般来讲,格式化字符串的第一个字符可以用来描述字节序(主机字节序)大小对齐方式

4.1.字节序、大小和对齐方式

Character

Byte order Size Alignment
@ native native native
= native standard none
< little-endian standard none
> big-endian standard none
! network (= big-endian) standard none

如果第一个字符不是上表中字符中的任何一个,则默认为@。native字节序依主机而定是大端模式还是小端模式,可以使用sys.byteorder来判断主机的大小端模式。

4.2.格式化字符

Format C Type Python type Standard size Notes
x pad byte no value
c char bytes of length 1 1
b signed char integer 1 (1),(3)
B unsigned char integer 1 (3)
? _Bool bool 1 (1)
h short integer 2 (3)
H unsigned short integer 2 (3)
i int integer 4 (3)
I unsigned int integer 4 (3)
l long integer 4 (3)
L unsigned long integer 4 (3)
q long long integer 8 (2), (3)
Q unsigned long long integer 8 (2), (3)
n ssize_t integer (4)
N size_t integer (4)
e (7) float 2 (5)
f float float 4 (5)
d double float 8 (5)
s char[] bytes
p char[] bytes
P void * integer (6)
分享到:

发表评论