什么是 .bin 文件?
.bin 文件是二进制文件,通常用于存储程序、固件、传感器数据或其他非文本格式的原始数据。 与文本文件不同,二进制文件不能直接用普通编辑器阅读,需要通过特定方式解析其内容。
使用 Python 读取 .bin 文件
Python 提供了多种方式读取二进制文件,最常用的是内置的 open() 函数配合 'rb' 模式。
基础读取示例
# 以二进制模式打开文件
with open('data.bin', 'rb') as f:
data = f.read() # 读取全部字节
print(data[:20]) # 打印前20个字节(bytes对象)
使用 struct 模块解析结构化数据
如果你知道二进制数据的结构(例如:一个整数 + 两个浮点数),可以使用 struct 模块进行解包。
struct 解包示例
import struct
with open('sensor_data.bin', 'rb') as f:
# 假设文件包含:1个int (4字节) + 2个float (各4字节)
raw = f.read(12) # 总共12字节
values = struct.unpack('i2f', raw) # i=int, f=float
print("整数:", values[0])
print("浮点1:", values[1])
print("浮点2:", values[2])
逐块读取大文件
对于大型 .bin 文件,建议分块读取以节省内存:
def read_in_chunks(file_path, chunk_size=1024):
with open(file_path, 'rb') as f:
while True:
chunk = f.read(chunk_size)
if not chunk:
break
yield chunk
# 使用示例
for chunk in read_in_chunks('large_file.bin'):
process(chunk) # 自定义处理函数
常见应用场景
- 嵌入式系统固件分析
- 科学仪器输出数据解析
- 游戏存档或资源文件读取
- 网络协议原始数据包处理
注意事项
- 注意字节序(endianness):使用
<(小端)或>(大端)前缀指定,如'<i2f' - 确保了解数据格式,否则解析结果无意义
- 处理未知格式时,可先用十六进制查看器(如 HxD)分析文件结构