Language Guide (proto3) | proto3 语言指南(二)标量值类型
2024-10-19 03:02:29
标量值类型
标量消息字段可以具有以下类型之一 —— 下表显示了.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位机器。
最新文章
- iPhone开发学习
- 《Java中的自动装箱和拆箱功能.》
- EventBus框架在Android多Pane(Fragment)中的应用
- JDBC与ODBC的区别与应用
- Epoll在LT和ET模式下的读写方式
- adb测试使用相关
- NHibernate之映射文件配置说明(转载3)
- <;转载>;Wait and Waitpid
- VS 对于LINK fatal Error 问题 解决方案
- 14.2.2 InnoDB Multi-Versioning InnoDB 多版本
- 必须熟悉的vim快捷键操作
- 重温Javascript(四)-函数
- 3.Redis常用命令:String
- weblogic修改jdk版本遇到的问题与解决方法
- 安装ipset车祸现场
- spring框架应用系列四:切面编程(环绕通知与前后置通知区别)
- 【AtCoder】【组合数学】【模型转换】Colorful Balls(AGC012)
- go中单链表
- 201771010134杨其菊《面向对象程序设计java》第十周学习总结
- Django REST framework的分页