base64编码

一.简介 (来自百科)

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读

二.编码

1.数据转为二进制数据,每8位一个字节,作为基本传输单位.
2.一串二进制数据,每6位分隔,在高两位在补0,补充为一个字节,作为一个单位.如有3个字节二进制数据,则扩展为4个字节.
3.数据分隔后,每个字节实际只有低6位有意义,2^4 = 64,这样最多有64种可转换,这应该是base64的意义吧.

三.编码表
1.0到25分别对应A到Z.
2.26到51分别对应a到z.
3.52到61分别对应0到9.
4.62对应+,63对应/.

四.例子
1.数据:abc
2.二进制数据:01100001 01100010 01100011
3.分隔:  011000 010110 001001 100011
4.分别对应索引:24 22 9 35
5.索引对应编码表:Y W J j
6.编码结果:YWJj

五.总结
1.打开二进制数据文件,一般都是乱码,通过base64编码,直接可见,可复制,可传输,简单有效.
2.一个字节8位,没有256个可见字符直接表示,但通过base64编码,多个编码字符代码一个字节.
  这就是拆分的思想啊.在我们编程中,这种思想随处可见,如函数,类,多线程,多进程,分步式等.

原文地址:https://www.cnblogs.com/ginkgo-leaf/p/9687940.html