首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    最近在研究某游戏封包,里面的一个可变数据长度的数字值我没办法找到解码规律,他看起来像是使用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

    03
    领券