这篇列出了TcaplusDB支持的Proto Buffers数据类型,包括proto3和proto2版本与多种编程语言(C++、Java、Python、Go等)的完整类型映射表。 proto3映射表:涵盖double、float、int32、int64等18种类型,并说明编码方式(如负数建议用sint32)。 proto2映射表:涵盖15种基础类型,与proto3类型一致但支持语言较少(C++、Java、Python。
相关产品
游戏数据库 TcaplusDB 产品页,含版本规格、价格与购买入口。
TcaplusDB 支持的 Proto Buffers 数据类型。
一、proto3 数据类型与编程语言类型映射
| .proto 类型 |
C++ 类型 |
Java 类型 |
Python 类型 |
Go 类型 |
Ruby 类型 |
C# 类型 |
PHP 类型 |
Dart 类型 |
描述 |
| double |
double |
double |
float |
float64 |
float |
double |
float |
double |
– |
| float |
float |
float |
float |
float32 |
float |
float |
float |
double |
– |
| int32 |
int32 |
int |
int |
int32 |
fixnum/bignum(根据需要) |
int |
integer |
int |
使用可变长度编码。负数编码效率低,如果你的字段可能具有负值,请改用 sint32。 |
| int64 |
int64 |
long |
int/long |
int64 |
bignum |
long |
integer/string |
Int64 |
使用可变长度编码。负数编码效率低,如果你的字段可能具有负值,请改用 sint64。 |
| uint32 |
uint32 |
int |
int/long |
uint32 |
fixnum/bignum(根据需要) |
uint |
integer |
int |
使用可变长度编码。 |
| uint64 |
uint64 |
long |
int/long |
uint64 |
bignum |
ulong |
integer/string |
Int64 |
使用可变长度编码。 |
| sint32 |
int32 |
int |
int |
int32 |
fixnum/bignum(根据需要) |
int |
integer |
int |
使用可变长度编码。 |
| sint64 |
int64 |
long |
int/long |
int64 |
bignum |
long |
integer/string |
Int64 |
使用可变长度编码。有符号的 int 值。与常规 int32 相比,它们能更有效地编码负数。 |
| fixed32 |
uint32 |
int |
int/long |
uint32 |
fixnum/bignum(根据需要) |
uint |
integer |
int |
始终为四个字节。如果值通常大于2^28,则比 uint32 更有效。 |
| fixed64 |
uint64 |
long |
int/long |
uint64 |
bignum |
ulong |
integer/string |
Int64 |
始终为八个字节。如果值通常大于2^56,则比 uint64 更有效。 |
| sfixed32 |
int32 |
int |
int |
int32 |
fixnum/bignum(根据需要) |
int |
integer |
int |
始终为四个字节。 |
| sfixed64 |
int64 |
long |
int/long |
int64 |
bignum |
long |
integer/string |
Int64 |
始终为八个字节。 |
| bool |
bool |
boolean |
bool |
bool |
trueClass/falseClass |
bool |
boolean |
bool |
– |
| string |
string |
String |
str/unicode |
string |
string(UTF -8) |
string |
string |
string |
字符串必须始终包含 UTF-8 编码或7位 ASCII 文本,并且不能超过2^32。 |
| bytes |
string |
ByteString |
str |
byte |
string(ASCII-8BIT) |
bytestring |
string |
– |
可以包含不超过2^32个任意字节序列。 |
二、proto2 数据类型与编程语言类型映射
| .proto 类型 |
C++ 类型 |
Java 类型 |
Python 类型 |
Go 类型 |
描述 |
| double |
double |
double |
float |
*float64 |
– |
| float |
float |
float |
float |
*float32 |
– |
| int32 |
int32 |
int |
int |
*int32 |
使用可变长度编码。负数编码效率低,如果你的字段可能具有负值,请改用 sint32。 |
| int64 |
int64 |
long |
int/long |
*int64 |
使用可变长度编码。负数编码效率低,如果你的字段可能具有负值,请改用 sint64。 |
| uint32 |
uint32 |
int |
int/long |
*uint32 |
使用可变长度编码。 |
| uint64 |
uint64 |
long |
int/long |
*uint64 |
使用可变长度编码。 |
| sint32 |
int32 |
int |
int |
*int32 |
使用可变长度编码。有符号的 int 值。与常规 int32 相比,它们能更有效地编码负数。 |
| sint64 |
int64 |
long |
int/long |
*int64 |
使用可变长度编码。有符号的 int 值。与常规 int64 相比,它们能更有效地编码负数。 |
| fixed32 |
uint32 |
int |
int/long |
*uint32 |
始终为四个字节。如果值通常大于2^28,则比 uint32 更有效。 |
| fixed64 |
uint64 |
long |
int/long |
*uint64 |
始终为八个字节。如果值通常大于2^56,则比 uint64 更有效。 |
| sfixed32 |
int32 |
int |
int |
*int32 |
始终为四个字节。 |
| sfixed64 |
int64 |
long |
int/long |
*int64 |
始终为八个字节。 |
| bool |
bool |
boolean |
bool |
*bool |
– |
| string |
string |
String |
unicode(Python 2)或 str(Python 3) |
*string |
字符串必须始终包含 UTF-8 编码或7位 ASCII 文本。 |
| bytes |
string |
ByteString |
bytes |
byte |
可以包含任意字节序列。 |