protobuf3 标量数据类型
标量数据类型
消息标量字段可以是以下类型之一——下表列出了可以用在 .proto 文件中使用的类型,以及在生成代码中的相关类型:
.proto Type | Notes | 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 | 使用变长编码。符号整型。负值的编码效率高于常规的 int32 类型。 | int32 | int | int | int32 | Fixnum or Bignum (as required) | int | integer | int |
sint64 | 使用变长编码。符号整型。负值的编码效率高于常规的 int64 类型。 | int64 | long | int/long[3] | int64 | Bignum | long | integer/string[5] | Int64 |
fixed32 | 定长 4 字节。若值常大于2^28 则会比 uint32 更高效。 | uint32 | int[1] | int/long[3] | uint32 | Fixnum or Bignum (as required) | uint | integer | int |
fixed64 | 定长 8 字节。若值常大于2^56 则会比 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 和 ASCII 编码的字符串,长度不能超过 2^32 。 | string | String | str/unicode[4] | string | String (UTF-8) | string | string | String |
bytes | 可包含任意的字节序列但长度不能超过 2^32 。 | string | ByteString | str | []byte | String (ASCII-8BIT) | ByteString | string | List<int> |