3

我正在开发一个开源项目(https://github.com/google/science-journal/tree/master/OpenScienceJournal)。有了这个应用程序,我可以记录一个实验。记录的实验以 .proto 扩展名存储。我试图编译它们以生成类但失败了。

有没有办法打开这种文件?

4

1 回答 1

5

在协议缓冲区中,.proto文件通常是描述消息而不是数据的基于文本的模式 DSL;但是,这些文件可能确实包含二进制数据(只是......不寻常)。仔细检查文件:如果它们看起来像:

message Foo {
   int32 bar = 1;
   // etc
}

然后是模式;如果它是二进制的,它可能是数据。

至于如何阅读:最简单的选择是已经有了 schema。如果你不这样做,数据在技术上是模棱两可的——你可能可以通过检查数据对其进行逆向工程,但这可能会很尴尬。您可能会发现https://protogen.marcgravell.com/decode等工具对此很有用。

有了架构和数据后,您将:

  • 从架构中生成您选择的平台中的必要存根(https://protogen.marcgravell.com/在这里可能有用)
  • 然后:为您选择的平台使用 protbuf 库的“反序列化”API 将数据加载到对象模型中
  • 最后:检查对象模型,现在填充了数据
于 2018-07-19T08:27:43.453 回答