三.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)对于值类型的表达式,它的值是实际的数据. ...
随机推荐
- 采用socket传输文件
采用socket传输文件 客户端输入文件的地址,服务端判断文件存在,就将文件传输到客户端 package com.fly.socket; import java.io.BufferedInputStr ...
- 用外部按钮打开DATETIMEPICKER下拉日期选择窗口
https://www.cnblogs.com/gaodu2003/archive/2009/08/10/1543115.html 方法一: SendMessage(DateTimePicker1.H ...
- python 之 Django框架(APP和ORM的使用)
12.3 APP 12.31 创建APP 一个Django项目可以分为很多个APP,用来隔离不同功能模块的代码 用命令行创建一个APP: python3 manage.py startapp app0 ...
- kubernetes1.16 配置 metrics-server
kubernetes1.16 版本对应最新的metrics-server为v0.3.5. 下载metrics-server配置文件 git clone https://github.com/kuber ...
- docker 部署 nsq
这篇文章主要介绍如何使用docker部署 nsq 组件 环境准备 本文基于一台 ubuntu 虚拟机试验 docker 安装 docker 安装方式 使用docker version 命令检查 doc ...
- rsync 使用
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件. rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分, ...
- Elasticsearch-6.7.0系列(六)ES设置集群密码
感谢此老兄:<手把手教你搭建一个 Elasticsearch 集群> 前提准备 安装kibana-6.7.0: <Elasticsearch-6.7.0系列(三)5601端口 kib ...
- CAS 5.x搭建常见问题系列(1).未认证的授权服务
错误内容 错误信息如下: 未认证授权的服务 CAS的服务记录是空的,没有定义服务.希望通过CAS进行认证的应用程序必须在服务记录中明确定义 错误原因 CAS 5.x 默认情况下不支持HTTP的客户端接 ...
- js加减乘除函数
经常用到算数的时候,可以直接用:// 除法函数function accDiv(arg1, arg2) { var t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toS ...
- WPF窗体动态效果
在浏览网页的时候,发现现在很多网页都采用这种效果.看起来很炫. 效果如下: 已经实现很久了,一直没写出来.今天突然想到,写出来分享一下 原理比较简单,就是在Window里面放一个MediaElemen ...