我们重新复习一下, ProtoBuf 的序列化使用过程:
- 定义 .proto 文件
- protoc 编译器编译 .proto 文件生成一系列接口代码
- 调用生成的接口实现对 .proto 定义的字段的读取以及 message 对象的序列化、反序列化方法
注意:并非编码成字符串数据,string 只是作为编码结果的容器
而我们经常调用的序列化函数 SerializeToString 并定义在基类 MessageLite 中。
编码
当某个 Message 调用 SerializeToString 时,经过一层层调用最终会调用底层的关键编码函数 WriteVarint32ToArray 或 WriteVarint64ToArray,整个过程如下图所示:
WriteVarint32ToArra