2 ^ 29 -1?
因为“字段编号1-15具有1字节标记。”
32字节没有标签?我知道3字节,但为什么没有标签?
那是varint吗?我无法理解protobuf \ descriptor.cc源代码。
答案 0 :(得分:1)
所有字段都有一个标记,但对于16和更高的字段编号,标记需要多个字节。因此,字段编号1到15应该用于最常见的字段。是的,编码是varint。
最大的密钥是2 ^ 29,因为最低的3位用于存储字段数据类型。所以29 + 3 = 32非常适合uint32_t
。
您可以在此处找到更多信息: https://developers.google.com/protocol-buffers/docs/encoding#structure