三.protobuf3标量值类型
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标量值类型的更多相关文章
- Language Guide (proto3) | proto3 语言指南(二)标量值类型
标量值类型 标量消息字段可以具有以下类型之一 -- 下表显示了.proto文件中指定的类型,以及自动生成的类中相应的类型: .proto Type 说明 C++ Type Java Type Pyth ...
- [C#] 类型学习笔记三:自定义值类型
既前两篇之后,这一篇我们讨论通过struct 关键字自定义值类型. 在第一篇已经讨论过值类型的优势,节省空间,不会触发Gargage Collection等等. 在对性能要求比较高的场景下,通过str ...
- C#学习笔记(三):值类型、引用类型及参数传递
值类型和引用类型简介 C#中存在两种数据类型,分别是值类型与引用类型,下面我们来看看这两种类型的区别. 值类型主要包括: 简单类型(如int.float.char等,注意string不是值类型): 枚 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段
编程语言的基元类型 某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32(); // a = 0 a = 1 ...
- PHP 标量类型与返回值类型声明
标量类型声明 默认情况下,所有的PHP文件都处于弱类型校验模式. PHP 7 增加了标量类型声明的特性,标量类型声明有两种模式: 强制模式 (默认) 严格模式 标量类型声明语法格式: declare( ...
- CLR via #C读书笔记三:基元类型、引用类型和值类型
1.一些开发人员说应用程序在32位操作系统上运行,int代表32位整数:在64位操作系统上运行,int代表64位整数.这个说法是完全错误的.C#的int始终映射到System.Int32,所以不管在什 ...
- C#篇(三)——函数传参之引用类型和值类型
首先应该认清楚在C#中只有两种类型: 1.引用类型(任何称为"类"的类型) 2.值类型(结构或枚举) 先来认识一下引用类型和值类型的区别: 函数传参之引用类型: 1.先来一个简单的 ...
- C# - 值类型、引用类型&走出误区,容易错误的说法
1. 值类型与引用类型小总结 1)对于引用类型的表达式(如一个变量),它的值是一个引用,而非对象. 2)引用就像URL,是允许你访问真实信息的一小片数据. 3)对于值类型的表达式,它的值是实际的数据. ...
随机推荐
- QT 模拟Visio软件通过拖动搭建流程图
探索中.. 1 https://bbs.csdn.net/topics/390848708 https://www.cnblogs.com/chinese-zmm/archive/2010/10/10 ...
- Tensorflow基本概念笔记
一.TensorFlow使用简单,部署快捷 TensorFlow使用数据流图(计算图)来规划计算流程,可以将计算映射到不同的硬件和操作平台.凭借着统一的架构,TensorFlow可以方便的部署剑各种平 ...
- python 读取环境变量
python 读取环境变量 前言 在使用python时候千万不要把账户密令直接写入脚本,特别是当你计划开源自己的作品时. 为了保护账户信息,你需要让脚本从环境中导入敏感信息. 读取方法 import ...
- golan切片
- 关于django操作orm的一些事--反向生成orm、连接多个数据库
1. django反向生成orm的类代码 使用命令python manage.py inspectdb > app01/models.py,注意,我这里的app01是app的名字. 2.djan ...
- quartz2.3.0系列目录——带您由浅入深全面掌握quartz2.3.0
quartz2.3.0系列目录 官网下载地址:http://www.quartz-scheduler.org/downloads/ 本系列demo全部来源于官网,仅仅是简化和汉化了注释!一部分代码de ...
- .net core使用ocelot---第七篇 服务发现
简介 .net core使用ocelot---第一篇 简单使用 .net core使用ocelot---第二篇 身份验证使用 .net core使用ocelot---第三篇 日志记录 .net ...
- [winfrom]C#中使用SendMessage
在C#中,程序采用了的驱动采用了事件驱动而不是原来的消息驱动,虽然.net框架提供的事件已经十分丰富,但是在以前的系统中定义了丰富的消息对系统的编程提供了方便的实现方法,因此在C#中使用消息有时候还是 ...
- 修改Excel脚本
批量修改Excel TODO: 批量修改Excel 功能: 将图片防止在本地,读取excel数据,拆分数据之后根本地照片名称对比,然后上传服务器,创建新得excel. #!/usr/bin/pytho ...
- Redis安装--CentOS7上安装Redis
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 1.R ...