Python 处理字节串:struct.pack和struct.unpack

Python struct模块

  • 1. struct
    • struct.pack
    • struct.unpack
  • 2. 格式
    • 2.1 字节顺序,大小和对齐方式
    • 2.2 格式字符

1. struct

struct是用来解决bytes和其他二进制数据类型的转换的模块,它使得流的操作变得非常简单,完美解决了Python没有字节数据类型的尴尬。

主要功能:

  • Python数据类型 ——> “字节串”
  • “字节串” ——> Python数据类型

struct.pack

struct的pack函数把任意数据类型变成bytes

  • 使用格式:struct.pack(format, v1, v2, ...)
    其中,format为设置的构建格式,后面有几个输入的值,就设置几个格式字符(后文2.2,当然也可以额外增加2.1的格式)。
  • 例子:struct.pack('>I', 10240099),返回生成的字节串b'\x00\x9c@c'

struct.unpack

unpack把bytes变成相应的Python数据类型

  • 使用格式:struct.unpack(format, buffer)
    其中,format为设置的构建格式,这个部分与pack有所不同。
  • 例子:struct.unpack('>IH', b'\xf0\xf0\xf0\xf0\x80\x80'),返回一个元组(4042322160, 32896)

2. 格式

格式字符串是用来在打包和解包数据时指定预期布局的机制。
它们使用指定被打包/解包数据类型的格式字符 进行构建。 此外,还有一些特殊字符用来控制 字节顺序,大小和对齐方式。

2.1 字节顺序,大小和对齐方式

Python 处理字节串:struct.pack和struct.unpack_第1张图片注:
1、本机字节顺序可能为大端或是小端,取决于主机系统的不同
2、标准大小仅取决于格式字符

2.2 格式字符

Python 处理字节串:struct.pack和struct.unpack_第2张图片

参考:

  1. Python 官方文档:struct — 将字节串解读为打包的二进制数据

你可能感兴趣的:(#,Python,计算机网络)