【发布时间】:2011-09-08 06:16:37
【问题描述】:
我想找到一种方法,将二进制 protobuf 消息转换为人类可读的包含数据的描述,而不使用 .proto 文件。
背景是我有一条 .proto 消息,它被 Android 上的解析器拒绝,但原因尚不完全清楚。我可以手动浏览消息,但它相当乏味。
我试过protoc --decode_raw,但它只是给出错误“无法解析输入。”。我谷歌希望/期待有人会做一个很好的网络实用程序可以做到这一点,但没有发现任何明显的东西。
我只是希望得到一些输出,例如:
field 1: varint: 128
field 4: string: "foo"
欢迎任何指向正确方向的指针!
【问题讨论】:
-
邮件是否有可能包含一些附加的标头?跳过前 1,2,3,4... 字节后尝试解码。
-
其中一个问题消息实际上只有 4 个字节:18、4、48、0(十进制)。 (也许它实际上被截断了?)
-
18 = "field 2, length-prefixed"(大概意思是:子消息),4 = 4(下一个片段的长度,以字节为单位),48 = "field 6, varint" , 0 = 0。因此您至少缺少 2 个字节(不满足广告的子消息大小)
-
这肯定可以解释为什么我会遇到问题 - 谢谢 Marc!
-
有一个related question about non "raw" decoding(使用已知的
.proto)。
标签: protocol-buffers