解码没有模式的protobuf

Posted

技术标签:

【中文标题】解码没有模式的protobuf【英文标题】:Decoding protobuf without schema 【发布时间】:2014-09-17 18:53:33 【问题描述】:

是否可以使用工具或任何将二进制数据解码为可读格式的工具来解码没有架构的 protobuf 序列化文件?

【问题讨论】:

在这里查看我的答案***.com/questions/7914034/… 【参考方案1】:

您通常可以推断架构。事实上,IIRC“protoc”工具有一组参数(--decode_raw, iirc),它可以精确地做到这一点——做出明智的猜测。然而,这一种猜测——格式是模棱两可的,因为多种不同类型的数据可以存储在相同的机制中——例如,一个以长度为前缀的块可能是:

子对象(任何用户类型) 压缩数组(各种原始类型) 一个 utf-8 字符串 一个原始字节[] 可能还有其他我忘记的东西

同样,一个 4 字节的固定宽度块可以是一个固定宽度的整数,也可以是一个浮点数;整数可以是有符号或无符号的。

【讨论】:

我厌倦了提供一个使用它序列化的文件,我写了 protoc filename.protobuf --decode_raw 它说不应该给输入文件 @moaz dis 你看到这个例子了吗? 是的,这就是我得到的:protoc f.bytes --decode_raw 使用 --decode_raw 时,不应给出输入文件。 是否可以再次编码原始字节?这样我就可以更改一些值,然后将其重新编码为原始文件? --decode_raw 选项期望从标准输入读取输入。所以实际的命令是protoc --decode_raw < INPUT_FILE

以上是关于解码没有模式的protobuf的主要内容,如果未能解决你的问题,请参考以下文章

解码没有模式的protobuf

分层 JPEG 编码器/解码器

URL中文编码解码

视频会议系统MCU的两种工作模式:全编全解以及转发模式的区别,以及优缺点。求知识啊

Jason 解码两次以正确匹配模式

GET请求中关于中文的编码与解码