base64产生原因?
先看ascii码的图片
scii码的128~255之间的值是不可见字符。而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。
1.#ascii与base64怎么对应
因为我们知道ascii是8bit可以表示256个字符,而base64为6bit,。人们总是会有办法的,我们通过计算可知
8bit 00000000 00000000 00000000
6bit 000000 000000 000000 000000
可以看到,ascii 出3个字节(24位)base64出4个字节刚好可以对应于是
例如:
字符串 a b c
ASCII 97 98 99
8bit 01100001 01100010 01100011
6bit 011000 010110 001001 100011
十进制 24 22 9 35
对应编码 Y W J j
2.那么问题来了,我就一个字符不够24位咋办?
现在还有一点小问题,当转换到最后, 最后的字符不足3个字符咋办, 如果不足三个字符的话,我们直接在最后添加=号即可, 具体可以参考以下两个字符串转换案例:
3.#助记
就好比1 2 3 4 a b 六个数,其中a b 不能网络认出,容易出错,这个时候,想办法用现有的可以被认出的来代替他们,好比a用12代替 34代替b,那么传输的时候就可以通过传输来表示了,1 2 3 4 12 34。有人说那万一我真想传12你却当成了a怎么办,(个人理解,这个时候可以通过传输时间,好比,我一次性给你传12代表a 当分开1和2传输隔0.5秒内为整数12超过则代表1和2。也许是这样区分的吧,类似这样的。)
python实现
编码与解码过程为