neh*_*nde 5 protocol-buffers grpc-python
Protocol buffers 的官方文档https://developers.google.com/protocol-buffers/docs/proto3说 protobuf 消息中字段的最大字段数是 2^29-1。但为什么会有这个限制呢?请问谁能详细解释一下吗?我对此是新手。
我阅读了这个问题的答案,即Why 2^29-1 is the Maximum key in protocol buffers。但我并没有澄清
我怀疑这只是为了可以将字段标头(线路类型和标记号)解码并作为 32 位值进行处理。线路类型始终是 3 个最低有效位,剩下 29 位用于标记号。从技术上讲,“varint”应该支持 64 位,但将其限制为合理的数字是有意义的,尤其是因为“varint”编码意味着较大的数字需要更多字节进行编码。
编辑:我现在意识到这与链接的帖子类似,但是......它仍然是正确的!protobuf 中的每个字段都以“varint”为前缀,表示后面的字段(标记号)以及它的数据类型(线路类型)。后者尤其重要,以便可以正确存储或跳过意外字段(版本差异)。大多数框架可以方便地处理该字段标头,并且大多数框架都可以使用 32 位整数。
| 归档时间: |
|
| 查看次数: |
6874 次 |
| 最近记录: |