广告投放广告投放   侵权处理侵权处理   关于本站关于本站
 APP下载 | 微博登录 | 微信登录 | QQ登录 | 登陆 | 注册

当前位置: 我爱分享网 > 源码分享 > 易语言源码 > 易语言 纯源码实现 非递归解析Protobuf全部节点并自动生成组包代码当前位置: 易语言源码 > 易语言 纯源码实现 非递归解析Protobuf全部节点并自动生成组包代码

易语言 纯源码实现 非递归解析Protobuf全部节点并自动生成组包代码

时间:2018-10-15    投稿者:L1yp    发布者:soujer  资源解压密码:www.9fxw.com - 小 + 大

易语言 纯源码实现 非递归解析Protobuf全部节点并自动生成组包代码

前言:

           Protobuf解析目前圈子没见过一个能[一次解析全部节点]的模块(类似protoc.exe --decode_raw),一般都是解析最外一层,用过Protobuf的童鞋可能知道,在面对嵌套多层并节点很多的情况下,可能会有多层循环和很多个判断,我觉得这种写法极其恶心,所以我在想能不能像json解析那样,一次解析完全部节点,然后想取哪个就哪个,也不用多次解析.
           Protobuf生成也没见过一个好用的,谷歌的不知道怎么生成的,目前见到的都是复制很多次的打包,如果嵌套5层 最内层了10000字节,想象一下要拷贝几次,每次拷贝多大的内存.


思路:

          解析思路:首先想到的是Protobuf结构可以用理解为树结构,这样就可以把个个节点保存在树上

          生成思路:首先构造一棵树,然后计算所有类型为Length_delimited(2)的长度字段,然后就可以通过中序遍历树来打包protobuf结构,避免了多次复制内存.



实现:

          首先Protobuf结构肯定是key-value-key-value...key-value

             ①如果类型是Varint(0),那么key-value对应的就是varint-varint

             ②如果是类型Length_delimited(2),对应的就是varint-varint(valueLen)-value

             ③其他类型和Varint类型类似

          说不清楚的,略过



使用:

          解析Protobuf,如下图

②生成易语言代码,如下图

 ③组包



  欢迎加入ELib一起讨论:547525064


      下载地址

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:400@tom.com

上一篇:青岛啤酒BUG联通秒撸300M 内附软件成品/源码

下一篇:精易VIP模块破解版(精易vip填表模块)V4.31 免费破解版

本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除
投稿发邮件:400@tom.com 或联系QQ20700549
广告合作 侵权处理
官网一群:加入QQ群(需注册本站用户)
官网二群:加入QQ群(本站免费群)
官网三群:加入QQ群(本站免费群)
Sitemap
备案皖ICP备17009674号-4 京公网安备 11011102000999号