Protobuf數據類型


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: 可能包含任意順序的字節數據類似javaByteString以及 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文檔

   



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM