有没有适用于Python的通用二进制协议编解码库?
2 个回答
5
Python的标准库里有一个叫做打包和解包的功能,可以用来处理二进制数据,并把这些数据映射到结构体上。
你可以查看这里的“11.3. 处理二进制数据记录布局” http://docs.python.org/tutorial/stdlib2.html
5
你有没有试过 bitstring 这个模块?(坦白说:我写的这个模块)。
这个模块的设计目的是让构建和解析二进制数据变得尽可能简单。你可以看看 一些例子,看看它是否符合你的需求。
下面这段代码是用来解析 H.264 视频文件的:
from bitstring import ConstBitStream
s = ConstBitStream(filename='somefile.h264')
profile_idc = s.read('uint:8')
# Multiple reads in one go returns a list:
constraint_flags = s.readlist('4*uint:1')
reserved_zero_4bits = s.read('bin:4')
level_idc = s.read('uint:8')
seq_parameter_set_id = s.read('ue')
if profile_idc in [100, 110, 122, 244, 44, 83, 86]:
chroma_format_idc = s.read('ue')
if chroma_format_idc == 3:
separate_colour_plane_flag = s.read('uint:1')
bit_depth_luma_minus8 = s.read('ue')
bit_depth_chroma_minus8 = s.read('ue')
...