标量值类型

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

.proto Type 说明 C++ Type Java Type Python Type[2] Go Type Ruby Type C# Type PHP Type Dart Type
double double double float float64 Float double float double
float float float float float32 Float float float double
int32 使用可变长度编码。负数的编码效率低下 —— 如果您的字段可能有负值,请改用sint32 int32 int int int32 Fixnum or Bignum (as required) int integer int
int64 使用可变长度编码。负数的编码效率低下 —— 如果您的字段可能有负值,请改用`sint64`。 int64 long int/long[3] int64 Bignum long integer/string[5] Int64
uint32 使用可变长度编码。 uint32 int[1] int/long[3] uint32 Fixnum or Bignum (as required) uint integer int
uint64 使用可变长度编码。 uint64 long[1] int/long[3] uint64 Bignum ulong integer/string[5] Int64
sint32 使用可变长度编码。有符号int值。它们比普通的`int32`更有效地编码**负数**。 int32 int int int32 Fixnum or Bignum (as required) int integer int
sint64 使用可变长度编码。有符号int值。 它们比普通的`int64`更有效地编码**负数**。 int64 long int/long[3] int64 Bignum long integer/string[5] Int64
fixed32 注意:总是4个字节(定长编码)。如果值通常大于228,则比`uint32`更有效。 uint32 int[1] int/long[3] uint32 Fixnum or Bignum (as required) uint integer int
fixed64 注意:总是8个字节(定长编码)。如果值通常大于228,则比`uint64`更有效 uint64 long[1] int/long[3] uint64 Bignum ulong integer/string[5] Int64
sfixed32 注意:总是4个字节(定长编码)。 int32 int int int32 Fixnum or Bignum (as required) int integer int
sfixed64 注意:总是8个字节(定长编码)。 int64 long int/long[3] int64 Bignum long integer/string[5] Int64
bool bool boolean bool bool TrueClass/FalseClass bool boolean bool
string 必须是UTF-8编码或7位ASCII文本的字符串,长度必须小于232字节。 string String str/unicode[4] string String (UTF-8) string string String
bytes 可以包含任何长度不超过232的任意字节序列。 string ByteString str []byte String (ASCII-8BIT) ByteString string List

要想了解更多关于序列化你的消息时这些类型如何编码的,请参阅协议缓冲区编码

  • [1] 在Java中,无符号的32位和64位整数用有符号的整数表示,最高位存储在符号位中。
  • [2] 在所有情况下,将值设置为字段将执行类型检查以确保其有效。
  • [3] 64位或无符号32位整数在解码时始终表示为long,但如果在设置字段时给定int,则可以表示为int。在所有情况下,值必须适合设置时表示的类型。见[2]。
  • [4] Python字符串在解码时表示为unicode,但如果给定ASCII字符串,则可以是str(这可能会更改)。
  • [5] 整数用于64位机器,字符串用于32位机器。

原文:https://www.cnblogs.com/itheo/p/14272995.html

作者:Theo·Chan

版权:本文版权归作者和博客园共有

转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接,否则必究法律责任

Language Guide (proto3) | proto3 语言指南(二)标量值类型的更多相关文章

  1. Swift语言指南(二)--语言基础之注释和分号

    原文:Swift语言指南(二)--语言基础之注释和分号 注释 通过注释向自己的代码中注入不可执行的文本,作为你自己的笔记或提示.Swift编译器运行时会忽略注释. Swift的注释与C语言极其相似,单 ...

  2. Swift语言指南(四)--类型安全和类型推断

    原文:Swift语言指南(四)--类型安全和类型推断 Swift是一门类型安全语言,类型安全语言需要代码里值的类型非常明确.如果你的代码中有部分值需要String类型,你就不能错误地传递Int. 鉴于 ...

  3. Swift语言指南(六)--可选值

    原文:Swift语言指南(六)--可选值 在值可能不存在的情况下使用可选值(optional), 可选值是: · 存在一个值,这个值等于 x 或 · 不存在任何值 注: 在 C 和 Objective ...

  4. 三.protobuf3标量值类型

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

  5. Swift5 语言指南(二十四) 泛型

    通用代码使您能够根据您定义的要求编写可以使用任何类型的灵活,可重用的函数和类型.您可以编写避免重复的代码,并以清晰,抽象的方式表达其意图. 泛型是Swift最强大的功能之一,Swift标准库的大部分内 ...

  6. Swift5 语言指南(二十七) 访问控制

    访问控制限制从其他源文件和模块中的代码访问部分代码.此功能使您可以隐藏代码的实现细节,并指定一个首选接口,通过该接口可以访问和使用该代码. 您可以为各个类型(类,结构和枚举)以及属于这些类型的属性,方 ...

  7. Swift5 语言指南(二十八) 高级运算符

    除了Basic Operators中描述的运算符之外,Swift还提供了几个执行更复杂值操作的高级运算符.这些包括C和Objective-C中您熟悉的所有按位和位移运算符. 与C中的算术运算符不同,S ...

  8. Swift5.1 语言指南(二十九)高级运算符

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. Swift5 语言指南(二十一) 嵌套类型

    通常创建枚举以支持特定类或结构的功能.类似地,定义纯粹在更复杂类型的上下文中使用的实用程序类和结构可能是方便的.为此,Swift允许您定义嵌套类型,从而在它们支持的类型定义中嵌套支持枚举,类和结构. ...

随机推荐

  1. JavaDailyReports10_11

    ********************************** 验证码 AWT Swing 1 package nanshen; 2 3 import java.awt.Container; 4 ...

  2. Lambda 表达式实例

    public class Java8Tester {/*** 语法 lambda 表达式的语法格式如下: (parameters) -> expression 或 (parameters) -& ...

  3. JavaScript--总结三(数组和函数)

    数组 数组的概念: 将多个元素(通常是同一类型)按照一定顺序排列放到一个集合中,这个集合称之为数组---简(一组有序的数据) 数组的作用:可以一次性存储多个数据 数组的定义: 1.通过构造函数创建数组 ...

  4. .net通过iTextSharp.pdf操作pdf文件实现查找关键字签字盖章

    之前这个事情都CA公司去做的,现在给客户做demo,要模拟一下签字盖章了,我们的业务PDF文件是动态生成的所以没法通过坐标定位,只能通过关键字查找定位了. 之前在网上看了许多通多通过查询关键字,然后图 ...

  5. 安装Apache2.4 操作系统:Centos7.4

    正式安装Apache2.4 操作系统:Centos7.4,(需要关闭Selinux)1.在每安装一个服务都要养成查看是否安装,如果安装则需要卸载: #[root@yankerp ~]# rpm -qa ...

  6. 杭电OJ2039——三角形(c++)(易错题:数据类型不确定)

    三角形 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  7. WPF学习笔记01_XAML之简介

    简介 XAML (发音"zammel" 咋么儿),用于实例化.NET对象的标记语言,主要用于构造WPF的用户界面.类似html标记语言. 通过XAML,程序员可以用代码的方式对界面 ...

  8. LeetCode106 从中序和后序序列构造二叉树

    题目描述: 根据一棵树的中序遍历与后序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [ ...

  9. 在Windows中安装MongoDB--图文并茂

    在Windows环境下安装MongoDB的方法 (1)下载MongoDB Windows版: 进入MongoDB官网 (2)设置数据文件和日志文件的存放目录: 打开刚刚安装MongoDB的目录咋bin ...

  10. Openstack OCATA 安装环境说明(一) 未完成版本

    1 Openstack简介: 2 实验说明: 3 图例: 4 实验环境说明: 4.1 ) 网卡说明: 网卡名 网 段 连接方式 说明 eth0 10.10.5.0/24 仅主机网络 内部网络自动以IP ...