我查看了scalar value types而且似乎没有选项可以存储小 int 值(实际上我需要 1 到 10 的整数值)。
除了为此创建一个具有 10 个可能值的枚举之外,还有其他选择吗?
最佳答案
您是对的,没有对较小原语的特定支持;这是因为架构语法需要支持不同平台和语言上的广泛实现,因此有意将类型保留为可用于大多数系统的子集。
枚举(.proto 中的enum
)被视为int32
值,使用“varint”编码。使用 int32
与使用值 Zero
、One
等声明 enum
相比,没有任何优势。因此,您可能会这样做那么就使用 int32 吧。只要您只使用低值,它就会非常有效地自动编码,这仅仅是因为“varint”编码的工作原理 - 0-127 范围内的任何内容都将需要一个字节来在线编码(加上字段 header ,通常是简单值的另一个单字节)。
关于java - protobuf 中的小 int 值应该使用什么数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50463770/