Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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 如何在没有Google协议缓冲区的情况下列出任意Google协议缓冲区消息的字段和值';什么是描述符?_Python_Protocol Buffers - Fatal编程技术网

Python 如何在没有Google协议缓冲区的情况下列出任意Google协议缓冲区消息的字段和值';什么是描述符?

Python 如何在没有Google协议缓冲区的情况下列出任意Google协议缓冲区消息的字段和值';什么是描述符?,python,protocol-buffers,Python,Protocol Buffers,我有一些任意的谷歌协议缓冲区消息作为字节字符串,我没有描述符。我如何遍历它的字段并检查它们的值?如果它们只表示为一些没有名称的通用字节数组,那就好了 我翻遍了google,stackoverflow和原始的协议缓冲区引用,没有任何用处。Python的反射模块也没有帮助,实际上不能反映任意消息的内部 再次声明:我的消息根本没有任何描述符,仍然需要列出它的字段,因此不回答。我知道的不多,但我认为protobuf的压缩方式使得在没有原始消息架构的情况下无法访问消息的名称。@PeterGibson如我所

我有一些任意的谷歌协议缓冲区消息作为字节字符串,我没有描述符。我如何遍历它的字段并检查它们的值?如果它们只表示为一些没有名称的通用字节数组,那就好了

我翻遍了google,stackoverflow和原始的协议缓冲区引用,没有任何用处。Python的反射模块也没有帮助,实际上不能反映任意消息的内部


再次声明:我的消息根本没有任何描述符,仍然需要列出它的字段,因此不回答。

我知道的不多,但我认为protobuf的压缩方式使得在没有原始消息架构的情况下无法访问消息的名称。@PeterGibson如我所说,我也在那篇文章中挖掘了stackoverflow,它没有回答,因为我根本没有任何消息描述符,仍然需要列出它的字段。请仔细阅读。在没有模式的情况下迭代字段是可能的-我在这里这么做-但我不知道是否有用于此的Python API。此外,协议是不明确的:相同的字节可能意味着不同的事情,您必须推断其含义。例如,“字符串”可以是utf8字符串、基本体的压缩数组、子消息或“字节”原始块。此外,没有字段名:只有数字。@MarcGravel感谢链接!数字完全可以。以及模糊的数据类型。到现在为止,我只是做了一些原始的“扫描器”消息模板,其中包含10个字节字段和后续ID,并用它读取我的消息。不过我想有一些通用的解决方案。@gerrBen您正在寻找一个阅读器/解析器API。如果我记得Google的命名约定,可能是“CodedInputStream”。我知道的不多,但我认为protobuf的压缩方式使得在没有原始消息模式的情况下无法访问消息的名称。@PeterGibson如我所说,我也在那篇文章中挖掘了stackoverflow,它没有回答,因为我根本没有任何消息描述符,仍然需要列出它的字段。请仔细阅读。在没有模式的情况下迭代字段是可能的-我在这里这么做-但我不知道是否有用于此的Python API。此外,协议是不明确的:相同的字节可能意味着不同的事情,您必须推断其含义。例如,“字符串”可以是utf8字符串、基本体的压缩数组、子消息或“字节”原始块。此外,没有字段名:只有数字。@MarcGravel感谢链接!数字完全可以。以及模糊的数据类型。到现在为止,我只是做了一些原始的“扫描器”消息模板,其中包含10个字节字段和后续ID,并用它读取我的消息。不过我想有一些通用的解决方案。@gerrBen您正在寻找一个阅读器/解析器API。如果我记得谷歌的命名惯例,也许是“CodedInputStream”。