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. [转帖]抢先AMD一步,英特尔推出新处理器,支持LPDDR5!

    抢先AMD一步,英特尔推出新处理器,支持LPDDR5! http://www.eetop.cn/cpu_soc/6946240.html 2019.10 intel的最新技术发展. 近日,知名硬件爆料 ...

  2. Java开发笔记(一百二十七)Swing的标签

    提起AWT的标签控件Label,那个使用体验可真叫糟糕,不但不支持文字换行,而且对中文很不友好,既可能把中文显示为乱码,还不支持博大精深的各种中文字体.所幸Swing的升级版标签JLabel在各方面都 ...

  3. Python规范:代码规范要注意

    主要有以下两种代码规范 <8 号 Python 增强规范>(Python Enhacement Proposal #8),以下简称 PEP8: <Google Python 风格规范 ...

  4. python基础 — 异常处理

    什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Python对象,表示一个错误. 当Pyth ...

  5. centos7,jdk8,tomcat8镜像推送到腾讯云

    目录 centos7 jdk tomcat centos7 创建一个mycentos7的文件 vim mycentos7 FROM centos:7 MAINTAINER qyp_mail@sohu. ...

  6. (二)pdf的构成综述

    引自:https://blog.csdn.net/steve_cui/article/details/81948486 一个pdf文件主要是由4部分构成:文件头.文件体.交叉引用表.文件尾 文件头:用 ...

  7. appium 环境准备

      一.环境准备 1.相关依赖环境 当前的环境是Windows 10版本 64位系统(32位的自己想办法吧)          1.jdk1.6.0 (64位)  --最好1.6以上版本      2 ...

  8. 企业级容器管理平台 Rancher 介绍入门及如何备份数据

    企业级容器管理平台 Rancher 介绍入门及如何备份数据 是什么 Rancher 是一个为 DevOps 团队提供的完整的 Kubernetes 与容器管理解决方案的开源的企业级容器管理平台.它解决 ...

  9. Codeforces 1207 G. Indie Album

    Codeforces 1207 G. Indie Album 解题思路 离线下来用SAM或者AC自动机就是一个单点加子树求和,套个树状数组就好了,因为这个题广义SAM不能存在 \(len[u] = l ...

  10. ZFS文件系统及Freenas介绍

    一.简介 1.什么是zfs文件系统 ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统(Dynamic File System),是第一个128位文件系统.最初是由 ...