感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
struct.unpack_from(format, buffer, offset=0)
struct.iter_unpack(format, buffer)
简介
此模块可以此模块可以执行 Python 值和以 Python bytes对象表示的C结构之间的转换,使用格式字符串作为 C 结构布局的精简描述以及与 Python 值的双向转换。
字节顺序、大小和对齐方式
默认情况下,C类型以机器的本机格式和字节顺序表示,并在必要时通过跳过填充字节进行正确对齐,或者,根据下表,格式字符串的第一个字符可用于指示打包数据的字节顺序,大小和对齐方式:
字符 | 字节顺序 | 大小 | 对齐方式 |
---|---|---|---|
@ | 按原字节 | 按原字节 | 按原字节 |
= | 按原字节 | 标准 | 无 |
< | 小端 | 标准 | 无 |
> | 大端 | 标准 | 无 |
! | 网络(=大端) | 标准 | 无 |
本机字节顺序可能为大端或是小端,取决于主机系统的不同。使用 sys.byteorder
来检查你的系统字节顺序。
import sys
print(sys.byteorder)
little
注意
- 填充只会在连续结构成员之间自动添加。 填充不会添加到已编码结构的开头和末尾。
- 当使用非本机大小和对齐方式即 ‘<’, ‘>’, ‘=’, 和’!’ 时不会添加任何填充。
- 要将结构的末尾对齐到符合特定类型的对齐要求,请以该类型代码加重复计数的零作为格式结束。
函数
struct.pack
(format, v1, v2, …)
返回一个 bytes 对象,其中包含根据格式字符串 format 打包的值 v1, v2, … 参数个数必须与格式字符串所要求的值完全匹配。
struct.``pack_into
(format, buffer, offset, v1, v2, …)
根据格式字符串 format 打包 v1, v2, … 等值并将打包的字节串写入可写缓冲区 buffer 从 offset 开始的位置。
struct.``calcsize
(format)
返回与格式字符串 format 相对应的结构的大小(即 pack(format, ...)
所产生的字节串对象的大小)。
struct.``unpack
(format, buffer)
根据格式字符串 format 从缓冲区 buffer 解包(假定是由 pack(format, ...)
打包)。 结果为一个元组,即使其只包含一个条目。 缓冲区的字节大小必须匹配格式所要求的大小,如calcsize
所示。
struct.``unpack_from
(format, buffer, offset=0)
对 buffer 从 offset 开始的位置根据格式字符串 format 进行解包。 结果为一个元组,即使其只包含一个条目。 缓冲区的字节大小减去 offset 必须匹配格式所要求的大小,如calcsize
所示。
struct.``iter_unpack
(format, buffer)
根据格式字符串 format 以迭代方式从缓冲区 buffer 解包。 此函数返回一个迭代器,它将从缓冲区读取相同大小的块直至其内容全部耗尽。 缓冲区的字节大小必须整数倍于格式所要求的大小,如calcsize
所示。
每次迭代将产生一个如格式字符串所指定的元组。
format由格式字符组成,请看下面
格式字符
格式 | C 类型 | Python 类型 | 标准大小 | 注释 |
---|---|---|---|---|
x | 填充字节 | 无 | ||
c | char | 长度为 1 的字节串 | 1 | |
b | signed char | 整数 | 1 | (1), (2) |
B | unsigned char | 整数 | 1 | (2) |
? | _Bool | bool | 1 | (1) |
h | short | 整数 | 2 | (2) |
H | unsigned short | 整数 | 2 | (2) |
i | int | 整数 | 4 | (2) |
I | unsigned int | 整数 | 4 | (2) |
l | long | 整数 | 4 | (2) |
L | unsigned long | 整数 | 4 | (2) |
q | long long | 整数 | 8 | (2) |
Q | unsigned long long | 整数 | 8 | (2) |
n | ssize_t | 整数 | (3) | |
N | size_t | 整数 | (3) | |
e | (6) | 浮点数 | 2 | (4) |
f | float | 浮点数 | 4 | (4) |
d | double | 浮点数 | 8 | (4) |
s | char[] | 字节串 | ||
p | char[] | 字节串 | ||
P | void * | 整数 | (5) |
注释:
'?'
转换码对应于 C99 定义的_Bool
类型。 如果此类型不可用,则使用char
来模拟。 在标准模式下,它总是以一个字节表示。- 当尝试使用任何整数转换码打包一个非整数时,如果该非整数具有__index()__方法,则会在打包之前调用该方法将参数转换为一个整数。
'n'
和'N'
转换码仅对本机大小可用(选择为默认或使用'@'
字节顺序字符)。 对于标准大小,你可以使用适合你的应用的任何其他整数格式。- 对于
'f'
,'d'
和'e'
转换码,打包表示形式将使用 IEEE 754 binary32, binary64 或 binary16 格式 (分别对应于'f'
,'d'
或'e'
),无论平台使用何种浮点格式。
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。
别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。
我先来介绍一下这些东西怎么用,文末抱走。
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
(4)200多本电子书
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
(5)Python知识点汇总
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。
(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!