java - protobuf 中的小 int 值应该使用什么数据类型?

标签 java protocol-buffers

我查看了scalar value types而且似乎没有选项可以存储小 int 值(实际上我需要 1 到 10 的整数值)。

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

最佳答案

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

枚举(.proto 中的enum)被视为int32 值,使用“varint”编码。使用 int32 与使用值 ZeroOne 等声明 enum 相比,没有任何优势。因此,您可能会这样做那么就使用 int32 吧。只要您只使用低值,它就会非常有效地自动编码,这仅仅是因为“varint”编码的工作原理 - 0-127 范围内的任何内容都将需要一个字节来在线编码(加上字段 header ,通常是简单值的另一个单字节)。

关于java - protobuf 中的小 int 值应该使用什么数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50463770/

相关文章:

protocol-buffers - 大型数据集上的 gRPC 序列化缓慢

protocol-buffers - Web 客户端与 gRPC 服务器通信

Android protobuf-lite toString 不工作

java - 处理一个 Spring bean/接口(interface)的多个实现

java - 如何让从 WSDL 生成的 Java 类实现接口(interface)

java - Java中对/dev/raw/raw1的RandomAccessFile访问

protocol-buffers - 有什么方法可以将 google protobuf 二进制文件(.pb 文件)反编译为 .proto 文件

java - AtomicInteger 似乎不适合我

java - Android 应用程序错误应用程序在安装时崩溃

java - Java 在 http 中发送 Protocol Buffer 的示例