前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >感谢此文,给了我解码某游戏封包数据编码的思路

感谢此文,给了我解码某游戏封包数据编码的思路

作者头像
用户2135432
发布2023-10-21 11:06:45
1670
发布2023-10-21 11:06:45
举报
文章被收录于专栏:猛牛哥的博客猛牛哥的博客

最近在研究某游戏封包,里面的一个可变数据长度的数字值我没办法找到解码规律,他看起来像是使用protobuf序列化后的数据,但是根据protobuf规则解码,结果又不对。例如04 ce 25表示十进制的10021,而如果按照protobuf规律解码,应该是得到12ce,即4814。这个地方卡了我好几天,想破头也想不到思路。 后来看了这个文章https://blog.csdn.net/qq_38410730/article/details/103702827 ,里面提到了protobuf对于正数的编码采用varint,对于负数的编码采用ZigZag编码后的varint。,因为负数使用zigzag编码更节省字节数。我突然想到会不会这游戏把正数也是先zigzag再varint呢。验证后确定是先zigzag,然后是个不完整的varint过程,不完整处是他解码时不需要调整为大端序。 解码过程: CE25 => 11001110 00100101 第一个字节去掉首位的1,然后逆zigzag(右移1位),得到:100111 00100101 => 10021

之前看的关于protobuf的文章都没有提到过zigzag,所以卡了好几天才解决这个问题。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档