Python 的 struct 模块中提供了 pack 和 unpack 函数

Python的struct模块能够在Python值和C结构体之间进行转换,这些结构体以Python字符串的形式表示。

Python Struct 可以进行二进制数据的打包和解包操作。

  • Python struct module can be used in handling binary data stored in files, database or from network connections etc.
  • It uses format Strings as compact descriptions of the layout of the C structs and the intended conversion to/from Python values.

Python的结构函数

在结构模块中有五个重要的函数 – pack()、unpack()、calcsize()、pack_into()和unpack_from()。在所有这些函数中,我们必须提供要转换为二进制的数据的格式。一些流行的格式字符包括:

?: boolean
h: short
l: long
i: int
f: float
q: long long int

你可以在这里获得所有格式字符的完整列表。我们逐一开始研究struct模块的函数。

Python 的 struct.pack() 函数

这个函数将一系列的值打包成指定类型的字符串表示。参数必须与格式所需的值完全匹配。让我们快速看一下struct pack()的例子。

import struct

var = struct.pack('hhl', 5, 10, 15)
print(var)
 
var = struct.pack('iii', 10, 20, 30)
print(var)
python struct pack

Python 的 struct.unpack() 函数

这个函数按照指定的格式将打包的值解包为其原始表示。即使只有一个元素,该函数始终返回一个元组。让我们快速看一下struct unpack()函数的示例。

import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
print(struct.unpack('hhl', var))
python struct unpack

Python中struct.calcsize()函数的含义是什么?

该函数通过给定的格式计算并返回结构体的字符串表示形式的大小。大小以字节为单位计算。让我们快速看一个示例代码片段。

import struct
 
var = struct.pack('hhl', 5, 10, 15)
print(var)
print("Size of String representation is {}.".format(struct.calcsize('hhl')))
python struct calcsize

Python的struct pack_into()和unpack_from()方法

这些功能允许我们将值打包到字符串缓冲区中,并从字符串缓冲区中解包。这些功能是在2.5版本中引入的。

import struct
# ctypes is imported to create a string buffer
import ctypes

# As shown in previous example
size = struct.calcsize('hhl')
print(size)

# Buffer 'buff' is created from ctypes
buff = ctypes.create_string_buffer(siz)

# struct.pack_into() packs data into buff and it doesn't return any value
# struct.unpack_from() unpacks data from buff, returns a tuple of values
print(struct.pack_into('hhl', buff, 0, 5, 10, 15))
print(struct.unpack_from('hhl', buff, 0))
Python Struct pack_into and unpack_from string buffer
发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds