Java protobuffer中的小int值应该使用什么数据类型?

Java protobuffer中的小int值应该使用什么数据类型?,java,protocol-buffers,Java,Protocol Buffers,我看了一下,似乎没有存储小int值的选项(实际上我需要整数值1到10) 除了为此创建一个包含10个可能值的枚举之外,还有其他选项吗?您是对的,没有对较小原语的特定支持;这是因为模式语法需要支持不同平台和语言上的广泛实现,因此有意将类型留给大多数系统可用的子集 枚举(enumin.proto)使用“varint”编码被视为int32值。使用int32与使用值0、1等声明enum之间没有任何优势。因此,您最好只使用int32。只要您只使用较低的值,它就会非常有效地自动编码,这仅仅是因为“varint

我看了一下,似乎没有存储小int值的选项(实际上我需要整数值1到10)


除了为此创建一个包含10个可能值的枚举之外,还有其他选项吗?

您是对的,没有对较小原语的特定支持;这是因为模式语法需要支持不同平台和语言上的广泛实现,因此有意将类型留给大多数系统可用的子集


枚举(
enum
in.proto)使用“varint”编码被视为
int32
值。使用
int32
与使用值
0
1
等声明
enum
之间没有任何优势。因此,您最好只使用
int32
。只要您只使用较低的值,它就会非常有效地自动编码,这仅仅是因为“varint”编码的工作原理-0-127范围内的任何内容都需要一个字节在线路上编码(加上字段头,通常是简单值的另一个单字节)。

字节
?它映射到一个
ByteString
,因此您需要自己反序列化它。如果它肯定只有1到10,并且任何其他值都应该无效,这听起来确实像是枚举的一个有效用例。@Michael
bytes
将是一个错误的选择-编码总是比较昂贵