是否有任何用于python的通用二进制协议编解码器库?

时间:2010-08-18 10:43:54

标签: python binary protocols

java版本很好 - MINA

有一次我听说python有类似的东西。但无法提醒。

编辑: 更具体一点,我想有一个工具,可以帮助我为一些二进制流创建一个编码。

EDIT2: 我想在这里列出解决方案(感谢Scott的相关主题) 按顺序列出我使用它。

2 个答案:

答案 0 :(得分:5)

python在标准库中有打包/解包,可以用来解释二进制数据并将它们映射到结构

请在此处查看“11.3。使用二进制数据记录布局”http://docs.python.org/tutorial/stdlib2.html

或此处http://docs.python.org/library/struct.html

答案 1 :(得分:5)

您是否尝试过bitstring模块? (完全披露:我写了)。

它旨在使二进制数据的构造和解析尽可能简单。看一下a few examples,看看它是否与你需要的一样。

此片段对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')
        ...