在protobuf中序列化子消息的实现

时间:2012-10-13 08:41:54

标签: implementation protocol-buffers

我正在学习protobuf的实现。但是,有一点我无法理解。框架如何将子消息(对象)序列化为具有可变头的缓冲区,即使有时它的长度也很难弄明白!将其序列化到其他地方并稍后将其复制到缓冲区中?

1 个答案:

答案 0 :(得分:1)

我能想到的至少有四种方法可以让我想到,“哪个”是一个实现细节,只要它得到正确答案:

  • 序列化到单独的缓冲区,然后复制
  • 假设标题占用的长度,跳过,序列化,然后返回并修复标题(可能涉及移动,但并非总是如此)
  • 如果您使用构建器,则可以在添加数据时单独进行序列化,然后再进行编写:在这种情况下,确定长度是微不足道的
  • 或者它可以有代码来计算值的长度而不实际序列化

我已经在不同的时间实现了至少3种这样的方法!