「数据结构」解锁Python二进制魔法,struct模块应用指南

2023-05-26 0 738

你与否曾碰到过须要从十进制统计数据中导出统计数据的情景,但全自动预测十进制统计数据库系统极为繁杂?那你就须要掌控Python国际标准复本的struct组件了

Python中struct组件能方便快捷地虚拟化处置十进制统计数据。责任编辑将全面性如是说struct组件的采用方式,紧密结合事例模拟前述应用领域,让你随心所欲掌控那个强悍的辅助工具。#python国际标准库#

此基础传授

struct组件是两个处置Python十进制统计数据库系统化和形式化输入的辅助工具。

「数据结构」解锁Python二进制魔法,struct模块应用指南

所谓格式化,将要统计数据转化成十进制统计数据,易于数据传输和储存;简而言之形式化输入,将要已近的十进制统计数据转化成具备层级亲密关系的内部结构体,方便快捷流程加载和操作方式。

提供更多的方式

先上看下那个组件为他们提供更多了什么样方式

「数据结构」解锁Python二进制魔法,struct模块应用指南

简单来讲,struct组件中有两个核心函数分别实现了上面两个功能。这两个函数为:pack()和unpack()。

「数据结构」解锁Python二进制魔法,struct模块应用指南

pack()将Python统计数据类型转化成指定格式的十进制字符串,unpack()将十进制字符串转化成Python统计数据类型。

「数据结构」解锁Python二进制魔法,struct模块应用指南

在采用时,他们经常须要给出一串格式化字符串,它描述了统计数据在十进制字符串中的储存方式。

格式化字符串

简而言之格式字符串,就是上表中的参数fmt,描述打包和拆包统计数据时的统计数据布局。那个字符串包含了一些特定的字符,用于指示应该如何解释十进制统计数据。

「数据结构」解锁Python二进制魔法,struct模块应用指南

其中,字符能分为两类:一类是用于字节顺序的指定,另一类是用于统计数据类型的指定。

【字节顺序指定】用于指定十进制统计数据在内存中的储存方式,包括大端字节序(big-endian)、小端字节序(little-endian)和本地字节序(native-endian)等。下面是一些常用的字节顺序指定字符及其含义:

「数据结构」解锁Python二进制魔法,struct模块应用指南字节顺序指定字符

`@`:本地字节序`=`:本地字节序,但指定大小端一致`<`:小端字节序`>`:大端字节序`!`:网络字节序(大端字节序)其中,本地字节序由系统决定,而大小端字节序则是指在内存中高位字节(MSB)和低位字节(LSB)的储存顺序。例如,两个16位整数0x1234的大端字节序表示为0x12 0x34,而小端字节序表示为0x34 0x12。

在采用Format Strings时,如果没有指定字节顺序,那么默认采用本地字节序。如果须要指定其他字节顺序,能在Format Strings中添加相应的指定字符。例如,采用`<`来指定小端字节序,采用`>`来指定大端字节序,采用`!`来指定网络字节序。

「数据结构」解锁Python二进制魔法,struct模块应用指南

了解字节顺序指定字符能帮助他们更好地处置十进制统计数据,保证统计数据在不同平台上的可移植性和正确性。

【统计数据类型的指定】

下面是struct组件格式化字符串的一些常用统计数据类型代码(截图来自官网):

「数据结构」解锁Python二进制魔法,struct模块应用指南格式化字符代码

以b和B为例,它们分别对应两个有/无符号的char类型,即两个字节大小,能采用1个字符描述为x。_Bool类型被Python简化为了bool类型,而其他的C数值类型在Python中也有对应的类型,比如short、int、long long等。

采用时对照上表查找即可。

购买专栏弹出剩余70%
举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务