Python如何读写二进制数组数据

  • Post category:Python

下面是Python读写二进制数组数据的完整攻略。

什么是二进制数组数据?

二进制数组数据,通常指的是包含数值类型的二进制数据。如 float、int 等。

二进制数组数据的读取

Python标准库中提供了 struct 模块供我们读取二进制数组数据。

struct.unpack(format, buffer) 方法,该方法使用 format 参数表示数据的编码格式,使用 buffer 参数表示二进制数据缓冲区,同时返回一个解码后的元组类型对象。

例如,假设我们有一个包含 3 个 float 类型的二进制数组数据,那么可以使用如下代码将其读取:

import struct

# 二进制数组数据(共 3 个 float 类型数据)
data = b'\x00\x00@@\x00\x00\x80?\x00\x00@@'

# 将二进制数组数据解析成 float 类型的元组
result = struct.unpack('fff', data)
print(result)

输出结果为:

(1.0, 2.0, 1.0)

二进制数组数据的写入

Python 标准库中也提供了 struct 模块供我们写入二进制数组数据。

struct.pack(format, v1, v2, ...) 方法,该方法使用 format 参数表示数据的编码格式,使用 v1, v2, … 参数表示各个数据的数值,同时返回一个二进制数据缓冲区。

例如,我们要将两个 int 类型数据以及一个 float 类型数据写入到二进制数据缓冲区中,代码如下:

import struct

# 将数据编码成二进制数组
data = struct.pack('ifh', 1024, 3.14, 1)

# 显示编码后的值(二进制数据)
print(data)

输出结果为:

b'\x00\x04\x00\x00o\xe1H@\x01\x00'

在上面的例子中,我们使用了 struct.pack() 方法,通过对模板格式的字符串进行格式化,传入需要写入的各个数据,从而得到了一个二进制数据样本。

其他

此外,我们还可以利用 array 模块读写二进制数组,具体使用方式可以参考 Python 官方文档。