Python Struct 模块2024 年 8 月 29 日 | 5 分钟阅读 在本教程中,我们将学习 Python 的 struct 模块并理解它的功能。 Python 中的 struct 模块提供了用于处理 C 风格数据结构和二进制数据的工具。它用于根据指定的格式将数据打包到二进制表示中或从二进制表示中解包出来。这在处理低级二进制数据格式时尤其有用,例如网络协议、文件格式等所使用的格式。 它提供了创建和解释打包的二进制数据的函数,使我们能够按字节级别工作。它通常在我们需要读取或写入二进制文件、通过网络发送或接收二进制数据或与低级硬件接口交互时使用。 Struct 函数让我们来理解 struct 模块的函数。 struct.pack() - struct.pack() 函数用于根据指定的格式将值打包到二进制字符串中。当您需要将 Python 数据类型转换为可以写入文件、通过网络发送或用于低级数据操作的二进制表示时,此函数特别有用。 struct.pack() 的语法如下: 语法 -
让我们理解以下示例 - 示例 - 输出 Packed data: b'*\x00\x00\x00\xcd\xcc\x0c@\x00\x00\x00Hello ' 解释 - 在此输出中,每个值都已根据格式字符串 'i f 10s' 进行打包。
struct.unpack() - struct.unpack() 函数用于根据指定的格式将二进制数据解包到值元组中。它接受一个格式字符串和一个类字节对象(通常从读取二进制文件或类似源获得),并返回一个包含解包值的元组。 语法
示例 输出 Unpacked values: (42, 3.140000104904175, b'Hello ') In this example: - `42` is the unpacked integer value. - `3.140000104904175` is the unpacked floating-point value. - `b'Hello '` is the unpacked bytes object representing the string 'Hello'. struct.unpack() 函数会根据提供的格式解释二进制数据,并返回一个解包值的元组。 struct.calcsize() - struct.calcsize() 函数用于根据给定的格式字符串计算存储打包数据所需的字节大小。它接受一个格式字符串作为参数,并返回按该格式打包数据所需的尺寸。 语法
示例 - 输出 Size required: 18 bytes 解释 - 在此示例中,格式字符串 `'i f 10s'` 表示您正在打包一个整数(`i`)、一个浮点数(`f)和一个 10 字节字符串(`10s`)。计算出的 18 字节大小是按照此格式字符串打包数据所需的总大小。 在实际执行打包操作之前,当您需要分配内存或确定打包二进制数据的存储需求时,struct.calcsize() 函数非常有用。 struct.pack_into() - Python 的 **struct** 模块中的 struct.pack_into() 函数用于根据给定的格式字符串将值打包到可变缓冲区中。此函数允许您将数据直接打包到预先分配的缓冲区中,这有助于优化内存使用并减少不必要的内存复制。 语法
示例 输出 Packed data buffer: bytearray(b'\x00\x00*\x00@33\x0f\xb5\xc3') 解释 - 在此示例中,整数值 `42` 和浮点值 3.14 被打包到 `data_buffer` 字节数组中,从索引 2(偏移量)开始。生成的打包数据存储在指定的缓冲区中,打包后您可以看到缓冲区中更新的值。 请记住,缓冲区必须是可写的,并且足够大以存储打包的数据。此外,指定的偏移量应在缓冲区的有效范围内。 struct.unpack_from() - struct.unpack_from() 用于根据给定的格式字符串,从指定偏移量开始,从缓冲区解包数据。此函数允许您从二进制缓冲区的特定位置提取数据,而无需解包整个缓冲区。 语法 struct.unpack_from(format, buffer, offset=0)
示例 - 输出 Unpacked values: (42, 3.140000104904175) 在此示例中,struct.unpack_from() 函数用于从 packed_data 缓冲区中提取一个整数和一个浮点数,从索引 2(偏移量)开始。解包并打印结果值。 指定的偏移量应在缓冲区的有效范围内。此外,用于解包的格式字符串应与打包到缓冲区中的数据所使用的格式匹配。 结论Python 中的 struct 模块提供了强大的工具,用于以各种格式打包和解包二进制数据。它对于处理需要在不同系统之间交换或写入文件的二进制数据特别有用。该模块允许您指定一个格式字符串,该字符串定义了数据的结构,包括数据类型及其大小。 |
当我们需要找出股票在特定时间段内的趋势时,移动平均线是重要的指标。移动平均线严格分析时间序列;因此,它们有助于经济学家、交易员和分析师了解市场趋势,识别...
阅读9分钟
简介 在计算机科学中,不相交集(通常称为并查集数据结构)是一种有效的工具,用于维护对象集合并回答有关其连通性的查询。Python 中的并查集算法经常用于创建不相交集,在解决问题时非常有效...
阅读 4 分钟
Wordcloud包通过可视化帮助我们了解文本内容中某个单词的频率。为了实现这一点,我们首先需要安装一些包,如pandas、matplotlib和Wordcloud。让我们看看每个包的安装步骤——Pandas的安装 Pandas是...
阅读 3 分钟
在本教程中,我们将编写 Python 程序,在给定前缀和后缀的情况下,在字典中搜索字符串。我们给定一个由 N 个字符串和 Q 个查询组成的数组,查询的形式是两个字符串:前缀和后缀。我们的任务是...
5 分钟阅读
简介 列表被认为是 Python 编程语言中最灵活的数据结构之一。另一方面,二维列表,或称 2D 列表,通常被称为列表的列表,是一个列表对象,其中每个元素...
阅读9分钟
在 Python 中,`容器` 是一个包含其他对象的对象。容器提供了一种组织和管理数据集合的方法。Python 提供了几种内置容器类型,包括 `列表`、`元组`、`集合` 和 `字典`。每种类型都有其自身的特点和用例。列表 列表是有序集合...
阅读 2 分钟
我们在日常生活中都遇到过很多情况,需要使用数据库管理系统来存储所有需要的信息和数据。使用数据库管理系统通常非常简单,但有时会变得有点...
阅读 12 分钟
在本教程中,我们将学习 Pafy 模块。Pafy 是一个用于下载 YouTube 内容和检索元数据的 Python 模块。我们将看到如何使用 Pafy 模块执行各种操作。它提供了一种访问 YouTube 内容的简单方法...
阅读 4 分钟
在本教程中,我们将讨论类型提示概念,这有助于提高代码的可读性并增强代码结构。我们将讨论一些类型提示技巧,这些技巧将使 Python 程序更具可读性。众所周知,Python 是一种动态类型编程语言……
阅读9分钟
SFTP,是 SSH 文件传输协议的缩写,也称为安全文件传输协议,是一种网络协议,允许我们通过任何可靠的数据流访问文件、传输文件和管理文件。该程序在安全通道上工作,例如 SSH,它...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India