我找不到 proto 中是否可以有 char/byte 类型。
我可以在这里看到各种类型:
- https://developers.google.com/protocol-buffers/docs/proto
- https://developers.google.com/protocol-buffers/docs/encoding
但我在那里找不到 byte 类型,甚至找不到 int16 类型。
最佳答案
不,没有固定的 1 字节类型。固定长度仅具有 4 和 8 字节变体。大多数其他数值都被编码为“varint”,其长度取决于大小(和符号,但“zigzag”在那里发挥作用)。因此,您可以将值 0-127 的字节存储在一个字节中,将 128-255 存储在两个字节中。 16 位值将占用 1 到 3 个字节,具体取决于大小(以及符号/之字形等)。
对于倍数,8位版本有“字节”,其余版本有“打包”;这避免了每个值的字段 header 的成本。
关于protocol-buffers - protobuf中有单字节类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17780300/