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

时间:2014-09-17 18:53:33

标签: c# protobuf-net

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

1 个答案:

答案 0 :(得分:6)

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

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

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