Potobuf 的编码
编码的作用
其实当前的数值类型 (int, short, char, …)可以理解为定长编码, 但是现实中, 我们 80% 的情况下, 只使用一些小的正整数, 还有些情况下, 使用小的负数。
这样一来我们就可以压缩信息。比如: 0000 0000 0001
, 我们可以压缩为 11 个 0, 一个 1
。因为信息(11 个 0, 1 个 1
)是连在一起的 (还有多个信息也是连在一起的),
我们需要一种方案来区分开 11 个 0
和 一个 1
, 还有区分其他信息。可以理解为需要信息边界 (自定义的概念), 而 variant 的消息边界是"每个字节的最高位(第8位)用来表示是否有后续字节",
信息内的信息边界是, 全是 0 则不记录。信息之间的消息边界是, 最高位 (第 8 位) 为 0 时, 信息的右边界。