有没有适用于Python的通用二进制协议编解码库?

3 投票
2 回答
2420 浏览
提问于 2025-04-16 02:57

有一个很不错的工具适用于Java - MINA

我曾经听说过有类似的工具适用于Python,但现在想不起来了。

编辑:为了更具体一点,我想要一个工具,可以帮助我处理一些二进制流的编码。

编辑2:我想在这里列出一些解决方案(感谢Scott提供的相关主题)按我会使用的顺序列出。

2 个回答

5

Python的标准库里有一个叫做打包和解包的功能,可以用来处理二进制数据,并把这些数据映射到结构体上。

你可以查看这里的“11.3. 处理二进制数据记录布局” http://docs.python.org/tutorial/stdlib2.html

或者这里 http://docs.python.org/library/struct.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')
        ...

撰写回答