Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有用于python的通用二进制协议编解码器库?_Python_Binary_Protocols - Fatal编程技术网

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

是否有用于python的通用二进制协议编解码器库?,python,binary,protocols,Python,Binary,Protocols,有一个很好的java版本- 我曾经听说python也有类似的东西。但我不能提醒你 编辑: 更具体地说,我想有一个工具,可以帮助我创建一些二进制流的编码 编辑2: 我想在这里列出解决方案(感谢Scott提供相关主题) 按我使用它的顺序列出 (很棒的文档,我会选择) (乍一看很神秘) (python标准) python在标准库中有pack/unpack,可用于解释二进制数据并将其映射到结构 请参阅此处的“11.3.使用二进制数据记录布局” 或者在这里您尝试过该模块吗?(完全披露:我写的) 它

有一个很好的java版本-

我曾经听说python也有类似的东西。但我不能提醒你

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

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

  • (很棒的文档,我会选择)
  • (乍一看很神秘)
  • (python标准)

python在标准库中有pack/unpack,可用于解释二进制数据并将其映射到结构

请参阅此处的“11.3.使用二进制数据记录布局”

或者在这里

您尝试过该模块吗?(完全披露:我写的)

它旨在使二进制数据的构造和解析尽可能简单。看看它是否符合你的需要

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

一些可能相关的问题:另一个相关的问题:看起来像一个有趣的图书馆。当我有时间的时候,我会对它进行更广泛的研究。实际上,比特流应该被分割成以
0x000001
0x00000001
开始代码为前缀的NAL单元。您的代码显示了如何直接解析SPS。我将如何使用您的库进行翻译?@slhck:我们首先搜索一个字节对齐的0x000001
s.find('0x000001',bytealigned=True)
。但我无法用S.O.的答案编写完整的H.264解码器,所以它只是为了说明问题。当然:)谢谢,我找到了我需要的。我想说的是,我认为所提供的代码可能无法工作,因为在文件的一开始就应该至少有一个0x00前缀。