protobuf支持的数据类型不是很丰富
protobuf属于轻量级的,因此不能支持太多的数据类型,下面是protobuf支持的基本类型列表,一般都能满足需求,不过在选择方案之前,还是先看看是否都能支持,以免前功尽弃。同样该表也值得收藏,作为我们在定义类型时做参考。
.proto type |
c++ |
notes |
double |
double |
|
float |
float |
|
int32 |
int32 |
使用可变长编码方式,负数时不够高效,应该使用sint32 |
int64 |
int64 |
同上 |
uint32 |
uint32 |
使用可变长编码方式 |
uint64 |
uint64 |
同上 |
sint32 |
int32 |
使用可变长编码方式,有符号的整型值,编码时比通常的int32高效 |
sint64 |
sint64 |
同上 |
fixed32 |
uint32 |
总是4个字节,如果数值总是比2^28大的话,这个类型会比uint32高效 |
fixed64 |
uint64 |
总是8个字节,如果数值总是比2^56大的话,这个类型会比uint64高效 |
sfixed32 |
int32 |
总是4个字节 |
sfixed64 |
int64 |
总是8个字节 |
bool |
bool |
|
string |
string |
一个字符串必须是utf-8编码或者7-bit的ascii编码的文本 |
bytes |
string |
可能包含任意顺序的字节数据 |