Protobuf3 标量值类型

标量消息字段可以具有以下类型之一——该表显示了.proto文件中指定的类型,以及自动生成的类中的相应类型:

.proto类型 说明 C++ 类型 Java 类型 Python类型 Go类型 Ruby类型 C#类型 PHP类型
double   double  double  float  float64  Float  double float
float   float  float  float  float32  Float  float  float
int32  使用可变长度编码。编码负数效率低下——如果你的字段可能有负值,请改用sint32。 int32  int  int  int32  Fixnum或Bignum(根据需要) int  integer
int64 使用可变长度编码。编码负数效率低下——如果你的字段可能有负值,请改用sint64。 int64  long  int/long[3]  int64  Bignum  long  integer/string[5]
uint32  使用可变长度编码。 uint32  int[1] int/long[3]  uint32  Fixnum或Bignum (根据需要) uint integer
uint64  使用可变长度编码。 uint64  long[1]   int/long[3] uint64  Bignum  ulong  integer/string[5]
sint32  使用可变长度编码。符号整型值。这些比常规int32s编码负数更有效。 int32  int  int  int32  Fixnum或Bignum (根据需要) int  integer
sint64  使用可变长度编码。符号整型值。这些比常规int64s编码负数更有效。 int64  long  int/long[3] int64  Bignum  long  integer/string[5]
fixed32  总是四字节。如果值通常大于228,则比uint 32更有效 uint32  int[1]  int/long[3]  uint32 Fixnum或Bignum (根据需要) uint  integer
fixed64  总是八字节。如果值通常大于256,则比uint64更有效 uint64  long[1] int/long[3] uint64  Bignum  ulong   integer/string[5]
sfixed32  总是四字节。 int32  int  int  int32 Fixnum或Bignum (根据需要) int  integer
sfixed64  总是八字节。 int64  long   int/long[3] int64 Bignum  long  integer/string[5]
bool    bool  boolean  bool  bool  TrueClass/FalseClass bool  boolean
string  字符串必须始终包含UTF - 8编码或7位ASCII文本 string  String  str/unicode[4]  string String (UTF-8) string  string
bytes  可以包含任意字节序列 string  ByteString  str  []byte String (ASCII-8BIT)  ByteString  string

在协议缓冲区编码中序列化消息时,您可以了解更多关于这些类型的编码方式。

[1] 在Java中,无符号的32位和64位整数使用它们的有符号对应值来表示,高位简单地存储在符号位中。

[2] 在所有情况下,为字段设置值都将执行类型检查以确保其有效。

[3] 64位或无符号32位整数在解码时总是表示得一样长,但是如果在设置字段时给出了一个int,则可以是一个int。在所有情况下,该值必须符合设置时表示的类型。参见[2]

[4] python字符串在解码时表示为unicode,但是如果给出了ASCII字符串,则可以是str (这可能会发生变化)。

[5] integer用于64位机器,string用于32位机器。

三.protobuf3标量值类型的更多相关文章

  1. Language Guide (proto3) | proto3 语言指南(二)标量值类型

    标量值类型 标量消息字段可以具有以下类型之一 -- 下表显示了.proto文件中指定的类型,以及自动生成的类中相应的类型: .proto Type 说明 C++ Type Java Type Pyth ...

  2. [C#] 类型学习笔记三:自定义值类型

    既前两篇之后,这一篇我们讨论通过struct 关键字自定义值类型. 在第一篇已经讨论过值类型的优势,节省空间,不会触发Gargage Collection等等. 在对性能要求比较高的场景下,通过str ...

  3. C#学习笔记(三):值类型、引用类型及参数传递

    值类型和引用类型简介 C#中存在两种数据类型,分别是值类型与引用类型,下面我们来看看这两种类型的区别. 值类型主要包括: 简单类型(如int.float.char等,注意string不是值类型): 枚 ...

  4. C#学习笔记(基础知识回顾)之值类型和引用类型

    一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...

  5. CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段

    编程语言的基元类型   某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32();  // a = 0 a = 1 ...

  6. PHP 标量类型与返回值类型声明

    标量类型声明 默认情况下,所有的PHP文件都处于弱类型校验模式. PHP 7 增加了标量类型声明的特性,标量类型声明有两种模式: 强制模式 (默认) 严格模式 标量类型声明语法格式: declare( ...

  7. CLR via #C读书笔记三:基元类型、引用类型和值类型

    1.一些开发人员说应用程序在32位操作系统上运行,int代表32位整数:在64位操作系统上运行,int代表64位整数.这个说法是完全错误的.C#的int始终映射到System.Int32,所以不管在什 ...

  8. C#篇(三)——函数传参之引用类型和值类型

    首先应该认清楚在C#中只有两种类型: 1.引用类型(任何称为"类"的类型) 2.值类型(结构或枚举) 先来认识一下引用类型和值类型的区别: 函数传参之引用类型: 1.先来一个简单的 ...

  9. C# - 值类型、引用类型&走出误区,容易错误的说法

    1. 值类型与引用类型小总结 1)对于引用类型的表达式(如一个变量),它的值是一个引用,而非对象. 2)引用就像URL,是允许你访问真实信息的一小片数据. 3)对于值类型的表达式,它的值是实际的数据. ...

随机推荐

  1. javaScript的高级函数

    1.map() map()方法返回一个新数组,新数组是原始数组调用函数之后处理后的值. map()方法按照原始数组元素顺序依次处理元素. map不会对空数组进行检测. map不会改变原始数组 . 参数 ...

  2. SpringBoot配置文件敏感信息加密-jasypt

    使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...

  3. Nvidia Jetson TX2开发板学习历程( 2 )- 更换pip源,提高下载速度

    通过将pip的源更换为国内源,来提高下载速度,这也将成为今后学习过程下载Python包的基础,建议前期一定要完成! 知名的国内源 清华:https://pypi.tuna.tsinghua.edu.c ...

  4. RabbitMQ延迟消息队列实现定时任务完整代码示例

  5. Oracle中的dual表简介

    dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情,如下: 1.查看当前用户,可以在 SQL Plus中执行下面语句 sql代 ...

  6. Spring Cloud Alibaba学习笔记(16) - Spring Cloud Gateway 内置的路由谓词工厂

    Spring Cloud Gateway路由配置的两种形式 Spring Cloud Gateway的路由配置有两种形式,分别是路由到指定的URL以及路由到指定的微服务,在上文博客的示例中我们就已经使 ...

  7. Java调用WebService方法总结(4)--Axis调用WebService

    Axis是比较常用的WebService框架,该项目在2006实现了最终版,后面就没有更新了.文中demo所使用到的软件版本:Java 1.8.0_191.Axis 1.4. 1.准备 参考Java调 ...

  8. OO——UML解析

    目录 第四单元博客作业 一.前两次作业架构设计 1. 第一次作业 2. 第二次作业 二.架构设计以及对OO方法理解的演进 1. 表达式求导 2. 多线程电梯 3. 地铁线路查询 4. UML图的解析 ...

  9. Node学习之(第三章:art-template模板引擎的使用)

    前言 大家之前都有使用过浏览器中js模板引擎,其实在Node.js中也可以使用模板引擎,最早使用模板引擎的概念是在服务端新起的. art-template art-template是一款高性能的Jav ...

  10. 为什么ELT更适合于企业数据应用?

    为什么ELT更适合于企业数据应用 DataPipeline 陈肃 为什么现在企业环境中,一个ELT的方案会比ETL的方案更有优势,实际上是由企业数据应用特点决定的. 首先在一个企业数据应用里面我们对数 ...