c++ - 使用 Packed=true 原型(prototype)文件读取非打包重复字段

标签 c++ protocol-buffers

我刚刚意识到有一个选项可以更有效地使用 Protocol Buffer 来读取/写入基元数组。我已经有 protobuf 文件,但没有 Packed=true。我的问题是,当我将此选项添加到我的 .proto 并编译它时会发生什么。我是否能够读取之前保存的 protobuf(未使用此选项保存的)?

repeated int32 samples = 4 [packed=true];

最佳答案

从版本 2.3.0(2010 年 1 月)开始,Google 编写的 Protobufs 实现(C++、Java 和 Python)在解析时可以接受任一格式的数据。 packed 设置仅告诉实现在写入时使用哪种格式。请参阅the changelog (v2.3.0 下的第一项)。

版本 2.1(引入打包字段时)和 2.2 没有此属性 - 这些版本中的解析器仅接受打包中的 [packed=true] 字段格式,以及非打包格式的非[packed=true] 字段。

第三方实现可能支持也可能不支持此功能。您必须检查他们的文档,或者编写一个测试。

关于c++ - 使用 Packed=true 原型(prototype)文件读取非打包重复字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21147712/

相关文章:

ios - iOS中是否可以直接解析API protobuf文件?

protocol-buffers - 回顾 Flatbuffers 与 Protocol Buffers

c++ - 在 protobuf 中处理可选消息的正确方法是什么?

Android Http 请求和响应使用 Protocol Buffer

c++ - 在这种情况下有什么方法可以改进模板参数推导吗?

c++ - 在枚举类型上使用 std::max 是不好的做法吗?

c++ - -DNDEBUG 通常来自哪里?

inheritance - 如何将 : 1. ISerialized 与 Serializer.Merge/Serialize & 2. ProtoIninclude 与 RuntimeTypeModel.Default 一起使用?

C++:如何在可变参数模板参数上调用带有类型参数的函数?

c++ - 关于 rect ROI 的 OpenCv 断言失败