protobuf編譯文件和源碼在點擊打開鏈接
1: 數據類型:
double: 浮點數
float: 單精度浮點
int32: int類型,使用可變長編碼,編碼負數不夠高效,如果有負數那么使用sint32
sint32: int類型,使用可變長編碼, 有符號的整形,比通常的int32高效;
uint32: 無符號整數使用可變長編碼方式;
int64 long long , 使用可變長編碼方式。編碼負數時不夠高效——如果有負數,可以使用sint64;
sint64 long long 使用可變長編碼方式。有符號的整型值。編碼時比通常的int64高效;
uint64: 無符號整數使用可變長編碼方式;
fixed32 : 總是4個字節。如果數值總是比總是比2^28大的話,這個類型會比uint32高效。
fixed64: 總是8個字節。如果數值總是比總是比2^56大的話,這個類型會比uint64高效。
sfixed32: 總是4個字節。
sfixed64: 總是8個字節。
bool:bool值
string: 一個字符串必須是UTF-8編碼或者7-bit ASCII編碼的文本。
bytes: 可能包含任意順序的字節數據。類似java的ByteString以及 c++ string;
2.enum包
定義enum
enum Direction {
LEFT = 1;
RIGHT = 2;
UP = 3;
DOWN = 4;
};
3.proto定義包
.proto文件新增一個可選的package聲明符,用來防止不同的消息類型有命名沖突
包的聲明符會根據使用語言的不同影響生成的代碼。對於C++,產生的類會被包裝在C++的命名空間中
package tutorial; //package聲明符
4.mesage嵌套
message Person {}
message AddressBook
{
repeated Person people = 1;
}
5.proto3/proto2區別
Anytax = "proto2"
//或者
Anytax = "proto3"
示例:首先建立person.proto文檔