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编码的呢?其主要是经过一下步骤:
- 设原始数据为:0xAB 0xCD 0xEF 0xCA
- 将数据分为3个Byte/组:
(1)分组1:0xAB 0xCD 0xEF;
(2)分组2:0xCA; (没错,这里不够三个) - 然后将三个字节编码为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
- 分组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
- Base64编码的学习整理--网站开发中的应用
- python base64编码的应用
- Base64编码在PHP中的应用
- Base64编码在开发中应用
- 简说BASE64编码的应用
- Base64编码在网络图片传输中的应用实例
- java中的base64编码
- 我的Java开发学习之旅------>Base64的编码思想以及Java实现
- Base64 编码学习
- Base64 编码 学习
- Base64编码学习
- Base64编码原理与应用
- Base64编码原理与应用
- Base64编码原理与应用
- Base64编码原理与应用
- base64编码中的+号处理
- 关于Base64编码的
- 奇妙的Base64编码
- Shader光源类型判断
- 【USACO FEB 2010 SILVER】吃巧克力(Chocolate Eating)
- Android之AsyncTask异步加载(二)
- 设计模式C++实现(10)——桥接模式
- Glide详解
- Base64编码的学习整理--网站开发中的应用
- 安卓开发之Activity的4种启动模式
- 设计模式C++实现(11)——装饰模式
- javascript时间差插件
- Sketch插件介绍
- 那些不加班的开发团队,都看透了持续集成的四大好处
- String比较 ==和equals的区别
- 设计模式C++实现(12)——备忘录模式
- nginx + tomcat 导致session丢失的问题