概述
Python 读写文件的二进制数据比 C/C++ 语言复杂得多。主要差别在于需要进行 bytes 类型和其它基础数据类型(比如 int/float)的转换。
转换工具在一般情况下都是使用 struct 库。
读出数据
在 open 函数中使用 rb 作为 mode 打开文件,再用 struct.unpack 函数解析 bytes 数据。
具体可以参考 open 函数和 stuct.unpack 函数的说明。
数据文件中二进制数据如下图所示:
import struct
# rb 表示以二进制形式打开文件
with open(r"D:\temp\test.raw", mode="rb") as f:
# 移至指定字节位置
f.seek(3)
# 读入 16 个字节
a = f.read(16)
# 打印 a 类型 bytes
print(type(a))
# 打印 a 内字节数目
print(len(a))
# 打印 a 内数据,以 16 进制数显示
print(a)
# 16 个字节解析为 4 个 unsigned short 数据和 2 个 unsigned int 数据,字节排序为小端,返回元组
val_tuple = struct.unpack("<4H