Protobuf从消息数据中获取模式

3
我刚学习了protobuf,觉得它非常酷,想知道为什么以前从未听说过。我知道它不是为人类眼睛设计的,而是用于端到端传输。我正在尝试找出答案,但还没有找到。如果您获得了编码的消息,是否可以解开它以查找字段和值。
模式名称可能不存在,但即使只能说这个对象有x个字段,值为x、y、z,也是有用的。
如果有任何区别(虽然不应该有),我正在使用苹果的swift-protobuf(https://github.com/apple/swift-protobuf)。
1个回答

2

这里有线格式文档: https://developers.google.com/protocol-buffers/docs/encoding

你可以在一定程度上解码顶层消息,但对于嵌入的长度限定字段,你无法确定它们表示字符串还是嵌套消息。除了组之外,在编码消息中出现的所有线类型都可以映射到多个字段类型。例如,32位字段可以存储整数或浮点数。长度限定字段可以包含嵌套消息或字符串等。确切的映射由模式(= .proto文件)确定,通常发送者和接收者知道模式,而不包含在二进制数据中。

编辑:仅将长度限定字段视为消息进行解码实际上可能有效 - 随机数据似乎很难完全符合消息格式...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接