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
以下是我的手算过程: