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

Protobuf数据类型的更多相关文章

  1. Protobuf 数据类型

    .proto Type   Notes C++ Type Java Type double    double  double float    float  float int32 Uses var ...

  2. Google 开源技术protobuf

    http://blog.csdn.net/hguisu/article/details/20721109#0-tsina-1-1601-397232819ff9a47a7b7e80a40613cfe1 ...

  3. Google protobuf proto文件编写规则

    转载自: http://blog.csdn.net/yi_ya/article/details/40404231 1. 简单介绍 protobuf文件:就是定义你要的消息(类似java中的类)和消息中 ...

  4. google protobuf使用

    下载的是github上的:https://github.com/google/protobuf If you get the source from github, you need to gener ...

  5. google_protobuf数据类型

    要通信,必须有协议,否则双方无法理解对方的码流.在protobuf中,协议是由一系列的消息组成的.因此最重要的就是定义通信时使用到的消息格式. Protobuf消息定义 消息由至少一个字段组合而成,类 ...

  6. python读写protobuf

    0.     前期准备 官方protobuf定义 https://code.google.com/p/protobuf/   python使用指南 https://developers.google. ...

  7. ScalaPB(4): 通用跨系统protobuf数据,sbt设置

    我们知道,在集群环境节点之间进行交换的数据必须经过序列化/反序列化处理过程,而在这方面protobuf是一个比较高效.易用的模式.用户首先在.proto文件中用IDL来定义系统中各种需要进行交换的数据 ...

  8. 项目中使用protobuf

    在互种系统中数据通信或数据交换可以使用protobuf,他比json.xml的数据量要小一些. 另外因为消息要单独写一个.proto文件,来生成各平台的代码,所以对跨平台通信来说也比较友好. 一.使用 ...

  9. google protobuf 中的proto文件编写规则

    1. 简单介绍 protobuf文件:就是定义你要的消息(类似Java中的类)和消息中的各个字段及其数据类型(类似java类中的成员变量和他的数据类型) 2. Protobuf消息定义 消息由至少一个 ...

随机推荐

  1. 待选框、目标框select项目左右移动

    效果: 可以用一般的select multiple="multiple".自己写jq定义左移.右移.全部左移.全部右移.保存submit后端来操作select属性,方法参考html ...

  2. [cloud][sdn] neutron了解

    了解 neutron 文档:https://yeasy.gitbooks.io/openstack_understand_neutron/content/ LB讲的不细.DVR讲的不清晰. 读了全文之 ...

  3. 防止atoi函数内存越界

    函数形式为: int atoi(const char *nptr);    函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非 ...

  4. js中属性类型:数据属性与访问器属性

    js中属性类型分为两种:数据属性和访问器属性 在js中,对象都是由名值对构成的,名:就是我们所说的属性名,值就是属性对应的值(基本值.对象.方法). ECMA-262第5版定义了只有内部才用的特性,描 ...

  5. 实践-通过matlab操作sqlite数据库

    1.下载sqlite-jdbc连接数据库地址 https://bitbucket.org/xerial/sqlite-jdbc/downloads/ 2.将该jar包的绝对路径写入matlab的cla ...

  6. No converter found for return value of type

    springMVC请求接口的时候报500  No converter found for return value of type 原因:这是因为springmvc默认是没有对象转换成json的转换器 ...

  7. SpringBoot-区分不同环境配置文件

    spring.profiles.active=pre application-dev.properties:开发环境 application-test.properties:测试环境 applicat ...

  8. zedboard上首个驱动实践——Led

    // led驱动 *myled.c*//头文件 #include<linux/module.h> //最基本的文件,支持动态添加和卸载模块 #include<linux/kernel ...

  9. RestFramework——API基本实现及dispatch基本源码剖析

    基于Django实现 在使用RestFramework之前我们先用Django自己实现以下API. API完全可以有我们基于Django自己开发,原理是给出一个接口(URL),前端向URL发送请求以获 ...

  10. 下载pywin32

    下载pywin32 链接:sourceforge.net/projects/pywin32/files/ 1.找到一个pywin32的文件夹 2.下一级目录里面有多个文件夹. 3.打开Build222 ...