咱们知道计算机中的一个字节是由八个二进制数组成的,那总共就有256个组合,对应的就是ASCII
编码,而ASCII
编码前32位是表示翻页等功能的控制符,128~255之间的值是不可见字符。因此就形成了再计算机传输中有些ASCII
不可见从而丢失或者转义错误的状况!数组
为了有效显示这些信息,Base64编码
就是一种解决方案,简单来讲它就是将原始数据转换成二进制以后进行再编码,而这个再编码的每个单位是由6个二进制数组成,总共有64中组合,而这64个值都是咱们可以正常显示和传输的!服务器
咱们都知道,平时所看到的的字符串在计算机里最终都要转化为二进制数据,那一样是一串二进制数据,不一样的编码方式就决定了这串数据表示的含义。工具
所谓Base64编码就是将本来须要8个二进制表示的一个字符从新截取分配成只要6个二进制数据表示,这样从新分配以后,一段Base654码所包含的6的二进制数据所能表示的十进制数就是0(000000)到63(111111),下图直观地表示了这个转化过程: post
固然,比较理想的状况是原始字符串是3的倍数,那样就能完整地转化为Base64
字符,若是原始值不能被3整除就用0值来补充原始字符串使原始值变成3的倍数,因此才会出现通过Base64
转化以后字符长度会变成原来的4/3,也就是长了1/3.。下图中蓝色的部分就是补上的二进制数据: 优化
因此Base64
编码实际上就是将原始字符串通过从新编码后变成了64
个可被机器识别、打印的字符(包含26个小写字母、26个大写字母、10个阿拉伯数字和+
/
),固然若是最后两位选择不一样的话就造成了Base64
的不一样变种,好比Base64 URL
编码,下面是Base64
的64个字符的编码对照表: 网站
做为优化网站加载速度的一种方式,可让咱们直接在HTML
内嵌一些base64
编码的图片,这样能够减小http
请求。不过劲酒虽好不能贪杯,必定要注意分寸。前面咱们提到了通过base64
编码以后体积会增大1/3,因此对于一些很小的图片、icon是能够的,但对于一些细节较丰富的图片就得不偿失了。编码
base64
的出现本质上是一种将二进制数据转成文本数据的方案,因此对一些须要文本传输的系统例如邮件等会有应用。加密
关于文件类型的base64
编码,面对一串图片的base64
编码,我一度陷入沉思,这个东西究极表明啥,是存在服务器上的一串URL仍是就是表示这个图片自己,后来通过查资料我想清楚了,这就是表明图片自己。由于一个文件在计算机上的表示最终仍是要转为二进制的,二咱们这个base64
编码只不过是将表示图片信息的二进制数据用另外一种咱们看得懂的形式表示出来而已。至于图片转为二进制数据在不一样语言中都有相应的工具类方法的。code
理解了base64
的原理不难发现,它仅仅只是一种编码方式,连加密都算不上,就是一种将二进制数据转成咱们看得懂的格式的编码方式,它使用场景不少,但也不能滥用,毕竟它是会让编码体积增大1/3,同时在不一样的情境下可能有更好的编码方式选择,因此,多多了解一些才能作到有的放矢、游刃有余!cdn