- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Protobuf使用手册汇编
Protobuf使用手册 定义.proto 文件 首先我们需要编写一个 proto 文件,定义我们程序中需要处理的结构化数据,在 protobuf 的术语中,结构化数据被称为 Mto 文件非常类似 java 或者 C 语言的数据定义,可以使用C或C++风格的注释。下面是一个proto文件的例子。 package tutorial; option java_package = com.example.tutorial; option java_outer_classname = AddressBookProtos; message Person { required string name = 1; required int32 id = 2; // Unique ID number for this person. optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; } // Our address book file is just one of these. message AddressBook { repeated Person person = 1; } 一个proto文件主要包含package定义、message定义和属性定义三个部分,还有一些可选项。 定义package Package在c++中对应namespace。 对于Java,包声明符会变为java的一个包,除非在.proto文件中提供了一个明确有java_packageMessage在C++中对应class。Message中定义的全部属性在class中全部为private的。 Message的嵌套使用可以嵌套定义,也可以采用先定义再使用的方式。 Message的定义末尾可以采用java方式在不加“;”,也可以采用C++定义方式在末尾加上“;”,这两种方式都兼容,建议采用java定义方式。 向.proto文件添加注释,可以使用C/C++/java风格的双斜杠(//)?语法格式required string name = 1 [default=””]; 其中属性名与C++和java语言类似,不再解释;下面分别对标注、类型和属性顺序号加以详细介绍。 其中包名和消息名以及其中变量名均采用java的命名规则——驼峰式命名法,驼峰式命名法规则见附件1。 标注 标注包括“required”、“optional”、“repeated”三种,其中 required表示该属性为必选属性,否则对应的message“未初始化”,debug模式下导致断言,release模式下解析失败; optional表示该属性为可选属性,不指定,使用默认值(int或者char数据类型默认为0,string默认为空,bool默认为false,嵌套message默认为构造,枚举则为第一个) repeated表示该属性为重复字段,可看作是动态数组,””。 类型 Protobuf的属性基本包含了c++需要的所有基本属性类型。 protobuf属性 C++属性 java属性 备注 double double double 固定8个字节 float float float 固定4个字节 int32 int32 int32 使用变长编码,对于负数编码效率较低,如果经常使用负数,建议使用sint32 int64 int64 int64 使用变长编码,对于负数编码效率较低,如果经常使用负数,建议使用sint64 uint32 uint32 int 使用变长编码 uint64 uint64 long 使用变长编码 sint32 int32 int 采用zigzag压缩,对负数编码效率比int32高 sint64 int64 long 采用zigzag压缩,对负数编码效率比int64高 fixed32 uint32 int 总是4字节,如果数据2^28,编码效率高于unit32 fixed64 uint64 long 总是8字节,如果数据2^56,编码效率高于unit32 sfixed32 int32 int 总是4字节 sfixed64 int64 long 总是8字节 bool bool boolean string string String 一个字符串必须是utf-8编码或者7-b
您可能关注的文档
- 人教版物理《欧姆定律》ppt精品课件剖析.ppt
- 人教版新课标九年级上册第9课:古代科技与思想文化(二)29PPT剖析.ppt
- 人教版物理《家庭电路中电流过大的原因》ppt精品课件剖析.ppt
- 人教版物理九年级课件:十八章第四节焦耳定律(共22张PPT)剖析.ppt
- 人教版教学课件细胞质的结构和功能(二)剖析.ppt
- 人教版物理八上课件3.1温度剖析.ppt
- 人教版焦耳定律剖析.ppt
- 人教版童年的发现剖析.ppt
- PPT背景图片暗色系汇编.ppt
- 人教版必修1第五章第二节自然地理环境的差异性(共57张PPT)剖析.ppt
- 人教版走进化学实验室剖析.ppt
- 人教版第10课鸦片战争剖析.ppt
- 人教版选修《语言文字应用》课件:第一课走进汉语的世界-四方异声_普通话和方言(共14张PPT)剖析.ppt
- 人教版选修《外国诗歌散文欣赏》课件:第二单元-当你老了(共12张PPT)剖析.ppt
- 人教版选修《语言文字应用》课件:第三课神奇的汉字-汉字的结构(共13张PPT)剖析.ppt
- 人教版选修《语言文字应用》课件:第一课走进汉语的世界-认识汉语(共41张PPT)剖析.ppt
- 人教版选修《语言文字应用》课件:第三课+神奇的汉字-咬文嚼字-消灭错别字(共29张PPT)剖析.ppt
- 人教版选修《语言文字应用》课件:第三课神奇的汉字-咬文嚼字-消灭错别字(共29张PPT)剖析.ppt
- 人教版选修《语言文字应用》课件:第五课+言之有-避免歧义(共29张PPT)剖析.ppt
- 人教版选修《语言文字应用》课件:第三课神奇的汉字-规矩方圆(共38张PPT)剖析.ppt
文档评论(0)