struct模块(用于对象的压缩)
程序员文章站
2022-06-27 21:47:01
6.27自我总结 struct模块 1.struct模块中的函数 | 函数 | return | explain | | | | | | pack(fmt,v1,v2…) | string | 按照给定的格式(fmt),把数据转换成字符串(字节流),并将该字符串返回. | | pack_into(f ......
6.27自我总结
struct模块
1.struct模块中的函数
函数 | return | explain |
---|---|---|
pack(fmt,v1,v2…) | string | 按照给定的格式(fmt),把数据转换成字符串(字节流),并将该字符串返回. |
pack_into(fmt,buffer,offset,v1,v2…) | none | 按照给定的格式(fmt),将数据转换成字符串(字节流),并将字节流写入以offset开始的buffer中.(buffer为可写的缓冲区,可用array模块) |
unpack(fmt,v1,v2…..) | tuple | 按照给定的格式(fmt)解析字节流,并返回解析结果 |
pack_from(fmt,buffer,offset) | tuple | 按照给定的格式(fmt)解析以offset开始的缓冲区,并返回解析结果 |
calcsize(fmt) | size of fmt | 计算给定的格式(fmt)占用多少字节的内存,注意对齐方式 |
2.压缩
压缩后的内容 = struct.pack(格式,被压缩的内容)
3.解压
解压被压缩的内容 = struct.unpack(格式,压缩后的内容)
4.格式
格式符 | c语言类型 | python类型 | standard size |
---|---|---|---|
x | pad byte(填充字节) | no value | |
c | char | string 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(大写的i) | unsigned int | integer | 4 |
l(小写的l) | long | integer | 4 |
l | unsigned long | long | 4 |
q | long long | long | 8 |
q | unsigned long long | long | 8 |
f | float | float | 4 |
d | double | float | 8 |
s | char[] | string | |
p | char[] | string | |
p | void * | long |
5.注意
- _bool在c99中定义,如果没有这个类型,则将这个类型视为char,一个字节;
- q和q只适用于64位机器;
- 每个格式前可以有一个数字,表示这个类型的个数,如s格式表示一定长度的字符串,4s表示长度为4的字符串;4i表示四个int;
- p用来转换一个指针,其长度和计算机相关;
- f和d的长度和计算机相关;
下一篇: python包导入细节
推荐阅读
-
第三模块:01面向对象的编程(一)
-
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
-
在Python的struct模块中进行数据格式转换的方法
-
python用模块zlib压缩与解压字符串和文件的方法
-
python 打印出所有的对象/模块的属性(实例代码)
-
python 打印出所有的对象/模块的属性(实例代码)
-
Java Socket实现传输压缩对象的方法示例
-
js 用于检测类数组对象的函数方法
-
day21_步入百万年薪的第二十一天——面向对象初识、结构、从类名研究类、从对象研究类、logging模块进阶版
-
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法