1.为什么需要Base64编码?
- 因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。这样就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。
- 最好的方法就是在不改变传统协议的情况下,开辟一种新的方案来支持二进制文件的传送。把不可见字符用可见字符来表示。而Base64就是一种基于64个可见字符来表示二进制数据的表示方法。
2.Base64编码方法
- 简单来说,就是把原来三个字节的数据编码为四个字节。
- 如果Base64编码后产生的字节全是补0所产生的,则显示=,这也就是我们总是会看到Base64编码末尾总是会有最多两个“=”的原因。
- 从上面可知,Base64编码后,数据的大小会增加三分之一。
因为Base64编码的每个字节最高两位是0,低六位可以表示成64种可见字符,所以称为Base64编码,从0~63所代表的的可见字符如下表:
3.举个栗子
- 下面我们算一下”1”的Base64编码是多少?
- 我们知道1的,ASCII码是48,换成二进制就是0011 0001,所以网络传输中1就是用00110001表示的
- 要用Base64编码,因为不够三字节,所以末尾补0: 0011 0001 0000 0000 0000 0000
- 拆分成四字节: 00001100 00010000 00000000 00000000,每个字节高位补2个0
所以,上面Base64编码四个字节代表的数字分别是:12 16 0 0 - 又因