为什么要使用Base64编码:
Base64编码是从二进制值到某些特定字符的编码,这些特定字符一共64个,(原有2进制流8个bit一个字符,base64重新划分成6个bit表示一个字符,那么范围就变成0~63,即64个值,对应64种字符了)所以称作Base64。
为什么不直接传输二进制呢?比如图片,或者字符,既然实际传输时它们都是二进制字节流。而且即使Base64编码过的字符串最终也是二进制(通常是UTF-8编码,兼容ASCII编码)在网络上传输的,那么用4/3倍带宽传输数据的Base64究竟有什么意义?
真正的原因是二进制不兼容。某些二进制值,比如某些不可见字符(我们知道在计算机中的字节共有256个组合,对应就是ascii码,而ascii码的128~255之间的值是不可见字符)在一些硬件上,比如在不同的路由器,老电脑上,表示的意义不一样,做的处理也不一样。同样,一些老的软件,网络协议也有类似的问题。
但是万幸,Base64使用的64个字符,经ASCII/UTF-8编码后在大多数机器,软件上的行为是一样的。
综上所述,此编码方式只是用来保证数据传输准确性,而非加密算法。
对象序列化:
https://zhuanlan.zhihu.com/p/40462507 这篇文章讲的很详细。对象序列化不是单纯的将对象转为字符数组,因为还要反序列化。所以序列化还要记录对象结构信息。
总结就是编码是相对字节流或者说字符串而言,使其可以传输,而序列化是将对象数据转为字节流,使其可以传输。