当前位置: 首页 > 知识库问答 >
问题:

解析没有它们的协议缓冲区数据

杜晨朗
2023-03-14

是一个序列化协议缓冲区,如果不使用,则很难解析。proto/从中编译的类?

共有1个答案

朱通
2023-03-14

如果解析我的数据(使用协议缓冲区序列化)的代码知道它需要两个int和一个boolean,那么解析这些值容易吗?

当然您甚至不需要知道这一点——这里有一个工具,它将尝试在没有任何模式数据的情况下解码未知的protobuf,但有一些注意事项,其中一些数据可能是不明确的protoc内置了类似的工具。

至于如何从您自己的代码访问它:这完全取决于您使用的库。如果您使用的库具有原始读取器/解析器API(而不仅仅是完整的反序列化器),那么您可以使用它。您还可以定义一个proto2原型,将所有内容都作为扩展字段,并使用扩展API。或者,如果您知道特定对象的预期布局,您可以在中声明自己的类型。proto,甚至可能不是这样。名称不需要匹配,只需要字段编号和类型。例如,对于protobuf net(.net),以下内容适用于您的场景:

class SomeType {
    [ProtoMember(1)] public int A {get;set;}
    [ProtoMember(2)] public int A {get;set;}
    [ProtoMember(3)] public bool A {get;set;}
}
...
var obj = Serializer.Deserialize<SomeType>(source);
Console.WriteLine(obj.A); // int
Console.WriteLine(obj.B); // int
Console.WriteLine(obj.C); // bool

有额外的“填充/绒毛”,这就是为什么我推荐一个阅读器/解析器库,但是。。。这并不难。

 类似资料:
  • 在阅读这个相当长的问题之前,我提出了一个bughttps://github.com/GoogleCloudPlatform/python-docs-samples/issues/1103. 原型包和名称解析的留档状态 您可以使用其他定义。通过导入原始文件。导入另一个。在proto的定义中,您可以在文件的顶部添加一条import语句。 我的依赖于annotations.proto将HTTP/JSON

  • 是否有可能解析传入的google协议缓冲区数据报而不使用任何缓冲区。原始文件?我只是现在使用协议缓冲区对其进行了序列化,但不知道IDL文件。 我在寻找一种通过某种反射来迭代任何值的方法?这可能吗? 非常感谢。

  • 试图使用Ionic 4中的协议缓冲区进行编码 我已经下载了协议并用它来生成一堆_pb.js文件,每个. proto文件一个。很好。 首先关注原型示例。这是示例代码: 我做了一些更改以匹配我的文件。更改proto文件的名称。但是我的proto文件中没有包名称。所以我只是使用了消息名称。首先这是我的. proto文件的开头: 下面是我修改后的代码: 这似乎不起作用。我的控制台显示: 我相信我已经成功地

  • 我正在使用Google Protocol Buffers向服务器发送消息。我对如何发送图像与如何接收图像感到困惑。有关详细信息,请参阅下面的代码,但我的问题是: 我需要base64_decode从未经过base64编码的返回字符串吗,因为它是使用char*和size发送的?也许Google Protocol Buffers处理了这个问题,但我在生成的类中找不到任何证据。 我可能在这里找到了答案,但

  • 两者都是序列化库,由谷歌开发人员开发。他们之间有什么大的区别吗?将使用协议缓冲区的代码转换为使用FlatBuffers需要大量工作吗?

  • 据我所知,协议缓冲区主要用于控制服务器和客户端代码的项目。我的一般问题是——协议缓冲区能否用于将二进制消息序列化/反序列化到使用现有协议的服务器?所以,我的问题: > 如果协议缓冲区不支持本机微调现有协议的序列化/反序列化方式,那么可以通过扩展添加该功能吗?是否可以以某种方式添加序列化/反序列化方法可以识别的关键字?也许这可以通过扩展或修改protobuf csharp port或protobuf