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. 采用socket传输文件

    采用socket传输文件 客户端输入文件的地址,服务端判断文件存在,就将文件传输到客户端 package com.fly.socket; import java.io.BufferedInputStr ...

  2. 用外部按钮打开DATETIMEPICKER下拉日期选择窗口

    https://www.cnblogs.com/gaodu2003/archive/2009/08/10/1543115.html 方法一: SendMessage(DateTimePicker1.H ...

  3. python 之 Django框架(APP和ORM的使用)

    12.3 APP 12.31 创建APP 一个Django项目可以分为很多个APP,用来隔离不同功能模块的代码 用命令行创建一个APP: python3 manage.py startapp app0 ...

  4. kubernetes1.16 配置 metrics-server

    kubernetes1.16 版本对应最新的metrics-server为v0.3.5. 下载metrics-server配置文件 git clone https://github.com/kuber ...

  5. docker 部署 nsq

    这篇文章主要介绍如何使用docker部署 nsq 组件 环境准备 本文基于一台 ubuntu 虚拟机试验 docker 安装 docker 安装方式 使用docker version 命令检查 doc ...

  6. rsync 使用

    rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件. rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分, ...

  7. Elasticsearch-6.7.0系列(六)ES设置集群密码

    感谢此老兄:<手把手教你搭建一个 Elasticsearch 集群> 前提准备 安装kibana-6.7.0: <Elasticsearch-6.7.0系列(三)5601端口 kib ...

  8. CAS 5.x搭建常见问题系列(1).未认证的授权服务

    错误内容 错误信息如下: 未认证授权的服务 CAS的服务记录是空的,没有定义服务.希望通过CAS进行认证的应用程序必须在服务记录中明确定义 错误原因 CAS 5.x 默认情况下不支持HTTP的客户端接 ...

  9. js加减乘除函数

    经常用到算数的时候,可以直接用:// 除法函数function accDiv(arg1, arg2) { var t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toS ...

  10. WPF窗体动态效果

    在浏览网页的时候,发现现在很多网页都采用这种效果.看起来很炫. 效果如下: 已经实现很久了,一直没写出来.今天突然想到,写出来分享一下 原理比较简单,就是在Window里面放一个MediaElemen ...