使用pack的时候主要用来数据封包
使用pack的时候主要用来数据封包,struct模块中的三个常用函数的功能如下:
// 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)
pack(fmt, v1, v2, ...)
// 按照给定的格式(fmt)解析字节流string,返回解析出来的tuple
unpack(fmt, string)
// 计算给定的格式(fmt)占用多少字节的内存
calcsize(fmt)
###几个简单的例子
example1:数据的打包
from struct import pack, unpack
a = 13.24
pack1 = pack('i', a)
b, = unpack('i', pack1)
print b
>>13
>>[Finished in 0.0s]
其中i对应着4字节整形,解开包的时候格式要相同
from struct import pack, unpack
a = 'hello'
b = 'world!'
c = 2
d = 45.123
pack2 = pack('5s6sif', a, b, c, d)
print pack2
a1, b1, c2, d2 = unpack('5s6sif', pack2)
print a1, b1, c2, d2
>>helloworld!?}4B
>>hello world! 2 45.1230010986
其中s代表1字节字符,5s就表示了5个字符,i是4字节整形,f表示float类型,在最后将列出所有的格式。
cFORMAT | C TYPE | PYTHON TYPE | STANDARD SIZE |
---|---|---|---|
c | char | string of length 1 | 1 |
b | signed char | integer | 1 |
B | unsigned char | integer | 1 |
s | char[] | string | |
f | float | float | 4 |
i | int | integer | 4 |
I | unsigned int | integer | 4 |