在没有架构的情况下解码protobuf

Ahm*_*leh 6 c# protobuf-net

是否有可能解码protobuf序列化文件而无需使用工具或任何可将二进制数据解码为可读格式的模式?

Mar*_*ell 8

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

  • 子对象(任何用户类型)
  • 打包数组(各种基本类型)
  • 一个utf-8字符串
  • 原始字节[]
  • 也许还有别的我忘了

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

  • @moaz你试过`--decode_raw <f.bytes` (3认同)
  • `--decode_raw` 选项期望从 stdin 读取输入。所以实际的命令是“protoc --decode_raw &lt; INPUT_FILE”。 (2认同)