Protocol Buffers编码详解,例子,图解
来源:互联网 发布:ubuntu ifconfig eth0 编辑:程序博客网 时间:2024/04/30 03:11
Protocol Buffers编码详解,例子,图解
本文不是让你掌握protobuf的使用,而是以超级细致的例子的方式分析protobuf的编码设计。通过此文你可以了解protobuf的数据压缩能力来自什么地方,版本兼容如何做到的,其Key-Value编码的设计思路。如果你详细了解此文,你应该就能具备自己造一套编解码轮子的能力(至少基本思路)。
测试的例子
阅读图片时请对比前面的例子和表格。每个字段的名称都是包含了tag的。
message S2{ optional int32 s2_1 = 1; optional string s2_2 = 2 ;}enum E1 { E1_1 = 1; E1_3 = 3; E1_5 = 5;}message S3{ optional int32 s3_1 = 1; //设置为0x88 optional int32 s3_2 = 2; //设置为0x8888 optional uint32 s3_3 = 3; //设置为0xE8E8E8 optional uint32 s3_4 = 4; //设置为0xE8E8E8E8 optional int64 s3_5 = 5; //设置为0x8888 optional int64 s3_6 = 6; //设置为0xE8E8E8E8 optional uint64 s3_7 = 7; //设置为0xE8E8E8E8 optional uint64 s3_8 = 8; //设置为0xE8E8E8E8E8E8E8E8 optional sint32 s3_9 = 9; //设置为0x8888 optional sint32 s3_10 = 10; //设置为-0x8888 optional sint64 s3_64 = 64; //注意这个tag id 设置为0xE8E8E8E8 optional sint64 s3_65 = 65; //注意这个tag id 设置为-0xE8E8E8E8 optional E1 s3_11 = 11; //设置为E1_5 optional bool s3_12 = 12; //设置为true optional float s3_13 = 13; //设置 float,设置为88.888 optional fixed32 s3_14 = 14; //设置为 0x8888 optional sfixed32 s3_15 = 15; //设置为 -0x8888 optional double s3_16 = 16; //设置 double,设置为8888.8888 optional fixed64 s3_17 = 17; //设置为 0x8888888888 optional sfixed64 s3_18 = 18; //设置为 -0x8888888888 optional string s3_19 = 19; //设置为 "I love you,C++!" optional bytes s3_20 = 20; //设置为 "I hate you,C++!" repeated int32 s3_21 = 21; //设置为3, 270, and 86942, 用google文档的例子 repeated int32 s3_22 = 22 [packed = true]; //设置为3, 270, and 86942 repeated string s3_23 = 23; //设置为"love","hate","C++" optional S2 s3_24 = 24; //设置为 0x1,"love" repeated S2 s3_25 = 25; //设置为 0x16,"love" and 0x16,"hate" repeated fixed32 s3_26 = 26; //设置为1,2,3 optional int32 s3_27 = 27; //不设置}
编码的的数据表格如下,后面的剖析都会依赖这个表格进行。
http://www.cnblogs.com/fullsail/p/4220293.html
0 0
- Protocol Buffers编码详解,例子,图解
- Protocol Buffers编码详解,例子,图解
- Protocol Buffers编码详解,例子,图解
- Protocol Buffers编码详解,例子,图解
- Protocol Buffers编码详解,例子,图解
- Protocol Buffers编码详解,例子,图解
- Protocol Buffers编码详解
- Google Protocol Buffers详解
- Protocol buffers 详解【转】
- Protocol Buffers 详解1
- Google Protocol Buffers 编码(Encoding)
- Google Protocol Buffers 编码(Encoding)
- Google Protocol Buffers 编码(Encoding)
- Google Protocol Buffers 编码(Encoding)
- protocol buffers
- Protocol Buffers
- Protocol Buffers
- Protocol Buffers
- LA5713 减小边权求MST
- 啊哈算法 之 快速排序
- 短网址API设计
- 【并行计算】Linus:为何对象引用计数必须是原子的
- wrong answer 很多情况下是因为题目没看清楚
- Protocol Buffers编码详解,例子,图解
- 邮件激活
- well balanced reporting.The complete real truth nonetheless
- 单点登录
- QT 子窗口监听主窗口信号
- web程序员面试
- google+前端开发经验Idea
- winform+mysql
- result in levies of