Base64基本原理及简单应用

1.什么是Base64

Base64是一种基于64个可打印字符来表示二进制数据的编码方式,是从二进制数据到字符的过程。
原则上,计算机中全部内容都是二进制形式存储的,因此全部内容(包括文本、影音、图片等)均可以用base64来表示。前端

2.Base64编码原理

Base64编码之因此称为Base64,是由于其使用64个字符来对任意数据进行编码,同理有Base3二、Base16编码。标准Base64编码使用的64个字符为:浏览器

clipboard.png

有点特殊的是最后两个字符,因对最后两个字符的选择不一样,Base64编码又有不少变种,好比用于编码URL的Base64 URL编码。工具

Base64编码本质上是一种将二进制数据转成文本数据的方案。对于非二进制数据,是先将其转换成二进制形式,而后每连续6比特(2的6次方=64)计算其十进制值,根据该值在上面的索引表中找到对应的字符,最终获得一个文本字符串。学习

假设咱们要对 Hello! 进行Base64编码,按照ASCII表,其转换过程以下图所示:编码

clipboard.png

可知 Hello! 的Base64编码结果为 SGVsbG8h,每3个原始字符经Base64编码成4个字符。那么,当原始字符串长度不能被3整除时,怎么办呢?url

以 Hello!! 为例,其转换过程为:spa

clipboard.png

Hello!! Base64编码的结果为 SGVsbG8hIQAA。可见,不能被3整除时会采用来来补0的方式来完成编码。
须要注意的是:标准Base64编码一般用 = 字符来替换最后的 A,即编码结果为 SGVsbG8hIQ==。由于 = 字符并不在Base64编码索引表中,其意义在于结束符号,在Base64解码时遇到 = 时便可知道一个Base64编码字符串结束。.net

3.Base64编码应用

就前端而言,对于一些简单的图片,为了减小外部资源加载,下降页面加载时间,能够采用base64将图片编码成字符串,直接内嵌到页面中。这种内嵌方式的实现,得益于大部分浏览器对Data URI scheme特性的支持,该特性一般会在CSS设置背景图片时用到,其格式为:
background:url(data:文件类型;编码方式,编码后的文件内容);
也可经过img标签嵌入图片:
<img alt="base64 image" src="data:文件类型;编码方式,编码后的文件内容" />3d

下面说下具体使用方法(以icon图标为例):code

  1. 下载或制做所需图标;
  2. 使用base64在线编码工具,将图标编码成字符串;
  3. 将获得的字符串复制到你的前端代码中使用(例如background:url(字符串))

4.适用场景

通常适用于比较小、色彩层次单一的图片(如icon图标),不要试图用于色彩丰富的较大图片,尽管可以实现展示,但因为编码后的字符串很是大,会明显增大HTML/CSS文件的大小,影响加载速度。

本文学习网上资料整理而来,仅供我的学习使用,部份内容仅表明我的理解及思考。
主要参考
http://blog.xiayf.cn/2016/01/...
http://blog.csdn.net/zdy0_200...
相关文章
相关标签/搜索