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文档

   


posted @ 2018-01-27 22:44  jadeshu  阅读(11932)  评论(0编辑  收藏  举报