Base64编码的学习整理--网站开发中的应用

来源:互联网 发布:人工智能应用领域 编辑:程序博客网 时间:2024/06/10 01:42

Base64编码最早出现于MIME【(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型】,当时很多邮件系统的网关无法正式解析8bit的字节数据,于是就催生出了将数据转化为“7bit或以下“的数据的编码方式,而MIME就定义了Base64编码和QP(Quote-Printable)编码,本文主要讲Base64编码,Qp编码大家可以自己搜资料去,反正编码逻辑都很简单。

Base64编码,顾名思义,就是其编码就只有64中情况(0-63),因此编码后一个字节中有效数据的位数就是6bit。那么一段数据(一个字节8bit有效数据)是怎么转化为Base64编码的呢?其主要是经过一下步骤:

  1. 设原始数据为:0xAB 0xCD 0xEF 0xCA
  2. 将数据分为3个Byte/组:
    (1)分组1:0xAB 0xCD 0xEF;
    (2)分组2:0xCA; (没错,这里不够三个)
  3. 然后将三个字节编码为4个字节的base64编码, 即:3*8 = 4*6;
    (1)以分组1为例子,二进制表示为:10101011 11001101 11101111
    (2)24个比特分为4组: 101010 111100 110111 101111
    (3)高位补零:00101010 00111100 00110111 00101111 (十进制:42,60,55,47)
    (4)于是就完成了Base64编码的第一步,将8bit有效数据转换为6bit有效数据;
    (5)按照以下编码表,得到Base64最终的编码:q83v
    这里写图片描述
  4. 分组1的情况解决了,那么分组2应该怎么处理呢 ?其实同理,先将一个8bit的有效数据拆分为2个6bit有效数据,即将0xCA(11001010)变为:0x32、0x20(00110010 00100000) ,查表得到字符为:yg, 嗯!这里只有两个字节,不符合四个字节的原则,怎么办?那就补两个“=”,最终的Base64编码为yg==。【同理,如果最后剩下2个字节一组的话,就拆分成3个6bit字节,然后在后面补一个“=”】

Base64的编码流程结束了,接下来就说一下在网页开发中的应用吧。
(1)url:将一些二进制数据转成Base64编码后,加到Url里面,但是要注意+/两个字符的html转义。
(2) html页面内嵌图片:将网页中一些小的图片转化为Base64编码后随Html页面一起返回给浏览器,这样就可以避免因为小图资源请求而影响网页加载流畅度的问题了,但是缺点就是不能缓存图片,例子如下:

<img src="data:image/gif;base64,R0lGODlhDwAPAKECAAAAzMzM/////      wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4ML      wWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw=="      alt="Base64 encoded image" width="150" height="150"/>  
1 0
原创粉丝点击