一文轻松明白 Base64 编码原理
把图片丢进浏览器,打开sources能看到一长串字符串,这是图片的Base64编码。这一长串编码到底是怎么生成的呢?
我们接下来探索一下base64编码的原理
Base64 名称的由来
Base64编码要求把3个8位的字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。如果剩下的字符不足3个字节,则用0填充,输出字符使用’=‘,因此编码后输出的文本末尾可能会出现1或2个’='。
为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。(下面是Base64编码表)
思路
原始数据对应ASCII,生成8位的二进制,3个8位的字节(38=24)转化为4个6位的字节(46=24),不够补零。分割之后,得出来6位字节的二进制转化成十进制,再从base64表中寻找对应的字符
实现过程
原始数据:Mz1
根据ASCII表转换成8位二进制:01001101 | 01111010 | 00110001
将 38 切割成 46:010011 | 010111 | 101000 | 110001
分别转化成十进制:19 | 23 | 40 | 49
最后再去Base64编码表中找到数字对应的字符:T | X | o | x
最终 Mz1 的 Base64 :TXox
强化训练
Q:写出TB对应的Base64编码
1.TB1 对应的ASCII
T:01010100 B:01000010 1:00110001
2.将三个8位的二进制分割成4个6位的二进制
010101 000100 001000 110001
3.将二进制转换成十进制
21 4 8 49
4.将十进制按照Base64表得到Base64编码
V E J x
A:TB1所对应的Base64编码为 VEJx
用Base64的来呈现图片的有什么优势呢?
1)减少http网络请求:网页上的图片资源如果采用http形式的url的话都会额外发送一次请求,网页发送的http请求次数越多,会造成页面加载速度越慢。而采用Base64格式的编码,将图片转化为字符串后,图片文件会随着html元素一并加载,这样就可以减少http请求的次数,对于网页优化是一种比较好的手段。
2)不会造成跨域请求的问题。
3)没有图片更新要重新上传,不会造成清理图片缓存的问题
不足之处
就在于增加了CSS文件的尺寸,造成数据库数据量的增大
一文轻松明白 Base64 编码原理相关推荐
- base64编码_几分钟看懂Base64编码原理
Base64简介 Base64是基于64个可打印字符(小写字母a-z,大写字母A-Z,数字0-9,符号"+","/" 再加上作为垫字的"=" ...
- Base64 编码原理及代码实现
Base64 编码原理及代码实现 所谓 base64 编码就是从 ASCII 码表中选取64个可打印字符(A-Za-z0-9+/)作为基本字符集对其它字符进行编码转换.加上作为填充的 "=& ...
- 密码学-编码算法:Base64编码原理和使用
1.Base64简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.Base64编码是从二进制到字符的过程,可用于在 ...
- 5分钟学会Base64编码原理
Base64编码原理 一.前言 相信很多开发的小伙伴当听到 Base64的时候,都会误认为是它一种加密解密的算法. 其不然,Base64其实是一种编码格式,其作用:解决乱码 ...
- Base64编码原理与应用
本文内容转自网络,如需详细内容,请参考相关网址. http://my.oschina.net/goal/blog/201032 代码参考:http://blog.csdn.net/prsniper/a ...
- Base64编码原理与实现
Base64编码的原理是按bit将每6个bit转换成Base64编码表中的相应字符.下面是Base64的编码表: 0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 1 ...
- token要加编码decode吗_彻底弄明白Base64 编码
Base64 encoding/decoding常见于各种authentication和防盗链的实现当中.彻底搞懂它绝对提升团队troubleshooting的底气.我们从纯手工方式编码解码开始,然后 ...
- 一文搞明白GIT——Git原理解析与常用命令
工作中经常用git,但是不少命令经常使用出现各种各样的问题,也不太理解其中的原理.今天专门总结一下git的原理,理解原理之后想实现什么样的功能直接找相应的命令即可.如有错误和不足,欢迎指正! 一. 工 ...
- 吐血总结,彻底明白 python3 编码原理
关于编码的历史演变,utf-8是如何一步步发展来的,windows为啥依旧保持gbk的编码... 等等这些问题,网上一搜一大堆,大部分都是转发.分享后的雷同内容,依旧解决不了我内心的疑惑... 编码是 ...
最新文章
- 总线的数据传输类型(微机接口技术)
- matlab game of life,模拟器cellular auotomata元胞自动机 matlab
- 用Eclipse 开发Dynamic Web Project应用程序
- WCF+Nhibernate 序列化的问题。
- “ u”到底是做什么的? “ git push -u原始主机”与“ git push原始主机”
- python编程培训多少钱-python培训一般多少钱?[python培训]
- es6 Set 结合 Array.from 用法
- VTK:可视化之StreamLines
- python读取调用摄像头并将读取视频写入视频文件
- (7)nginx: 搭建 nginx+php环境
- 公布自己的pods到CocoaPods trunk 及问题记录
- C++导入导出动态库
- 二次元HTML导航页网站源码
- python如何把数字转化成字符_python 定义一个dictpython如何将数字转化为字符串
- 【Vue】—计算属性
- 递推DP URAL 1586 Threeprime Numbers
- 如何加载和保存TXT、CSV、DAT文本文件
- 有没有永久免费的云服务器?看完这篇文章你就明白了!
- 电力物联网大数据平台架构及应用
- Android Studio配置优化最全详解