Language Guide (proto3) | proto3 语言指南(二)标量值类型

标量值类型

标量消息字段可以具有以下类型之一 —— 下表显示了.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
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接,否则必究法律责任
posted @ 2021-01-13 16:54  Theo·Chan  阅读(423)  评论(0编辑  收藏  举报