Base64解码后protobuf反序列化问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34313556/article/details/81217494

2018-7-26

Base64解码后protobuf反序列化问题

消息体定义:

结构体值为:

该结构体经过protobuf序列化存储为[]byte后返回值为:

该[]byte数组base64后的结果为:

当使用以下函数:即先申请一片数组空间,长度为解码后的长度,然后将解码的值存至数组中,会得到与原值data不同的结果

会发现base64解码之后多了一个0

原因在于DecodeLen()函数是直接返回了包含‘=’在内的空间/4*3,会比原数据data串多[0,2]个byte,在此情况下,对申请空间赋值时,后[0,2]位为默认值0

0值在protobuf反序列化时会报以下错误:

正解:

参考链接:

Base64编码表:https://www.cnblogs.com/libin-1/p/6165485.html

ASCII码对照表:http://ascii.911cha.com/

图解protobuf:https://blog.csdn.net/zxhoo/article/details/53228303

以下是我的手算过程: 

 

展开阅读全文

没有更多推荐了,返回首页