2^29 -1? 因为“字段编号1-15有一个1字节标签”。
32字节没有标签?我知道3字节,但为什么没有标签?为什么2^29-1是协议缓冲区中最大的密钥
是那个varint?我无法理解protobuf \ descriptor.cc源代码。
2^29 -1? 因为“字段编号1-15有一个1字节标签”。
32字节没有标签?我知道3字节,但为什么没有标签?为什么2^29-1是协议缓冲区中最大的密钥
是那个varint?我无法理解protobuf \ descriptor.cc源代码。
所有字段都有标签,但对于字段编号为16或更高的标签需要多个字节。因此,场号1至15应该用于最常用的字段。是的,编码是varint。
最大的键是2^29,因为最低的3位用于存储字段数据类型。所以29 + 3 = 32整齐地适合于uint32_t
。
您将在这里找到更多的信息: https://developers.google.com/protocol-buffers/docs/encoding#structure
https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.descriptor – diwangkai