知道的越多,不知道的越多

0%

BASE64编码

存在的意义

有些网络渠道并不支持所有字节的传输,例如传统邮件传输中就不支持不可见字符的传输(不可见字符不是不显示的字符,而是显示了也无法看出来,例如换行符、回车、退格等字符)。像ASCII码的控制字符就不能通过邮件传输。现在很多图片传输的过程中包含了很多不可见字符,不同的路由器对不可见字符的处理方式不一样,所以在传输中经常会出现乱码现象。Base64编码的出现能够很好的解决不可见字符的传输问题。

原理

Base64能够将字符串编码成A-Z、a-z、”+”和”/“这64个字符,6位二进制正好能够表示完64序号,在编码过程中现将字符串转化为二进制,以3个字节(24位)位单位,划分为4个6位的小分组,每个小分组的前面补上两个0,转化成十进制后再根据对照表进行编码。

Base64将3个字节转变为4个字节,因此,编码后的代码量(以字节为单位)约比编码前的代码量多了1/3。如果代码量正好是3的整数倍,那么恰好多了1/3。但如果不是,那么,当多出的代码量不是3的整数倍时,代码量除以3的余数就是2或者1。转换的时候,结果不够6位的用0来补上相应的位置,之后再在6位的前面补两个0。转换完空出的结果就用就用“=”来补位,总之要保证最后编码出来得字节数是4的倍数。

BASE64与BASE432的区别与联系

  • 区别主要就是空间效率的区别,base64是具有比较高的空间效率的。

  • 联系就是大家都是一种稳定的把二进制数组变成可见字符的编码方式。

  • base32中StdEncoding和HexEncoding所使用的字符不同,但是具体其他区别我也不是很清楚。

  • base64中URLEncoding一般用于编码URL。

欢迎关注我的其它发布渠道