把图片丢进浏览器,打开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 编码原理相关推荐

  1. base64编码_几分钟看懂Base64编码原理

    Base64简介 Base64是基于64个可打印字符(小写字母a-z,大写字母A-Z,数字0-9,符号"+","/" 再加上作为垫字的"=" ...

  2. Base64 编码原理及代码实现

    Base64 编码原理及代码实现 所谓 base64 编码就是从 ASCII 码表中选取64个可打印字符(A-Za-z0-9+/)作为基本字符集对其它字符进行编码转换.加上作为填充的 "=& ...

  3. 密码学-编码算法:Base64编码原理和使用

    1.Base64简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.Base64编码是从二进制到字符的过程,可用于在 ...

  4. 5分钟学会Base64编码原理

    Base64编码原理 一.前言        相信很多开发的小伙伴当听到 Base64的时候,都会误认为是它一种加密解密的算法.        其不然,Base64其实是一种编码格式,其作用:解决乱码 ...

  5. Base64编码原理与应用

    本文内容转自网络,如需详细内容,请参考相关网址. http://my.oschina.net/goal/blog/201032 代码参考:http://blog.csdn.net/prsniper/a ...

  6. 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 ...

  7. token要加编码decode吗_彻底弄明白Base64 编码

    Base64 encoding/decoding常见于各种authentication和防盗链的实现当中.彻底搞懂它绝对提升团队troubleshooting的底气.我们从纯手工方式编码解码开始,然后 ...

  8. 一文搞明白GIT——Git原理解析与常用命令

    工作中经常用git,但是不少命令经常使用出现各种各样的问题,也不太理解其中的原理.今天专门总结一下git的原理,理解原理之后想实现什么样的功能直接找相应的命令即可.如有错误和不足,欢迎指正! 一. 工 ...

  9. 吐血总结,彻底明白 python3 编码原理

    关于编码的历史演变,utf-8是如何一步步发展来的,windows为啥依旧保持gbk的编码... 等等这些问题,网上一搜一大堆,大部分都是转发.分享后的雷同内容,依旧解决不了我内心的疑惑... 编码是 ...

最新文章

  1. 总线的数据传输类型(微机接口技术)
  2. matlab game of life,模拟器cellular auotomata元胞自动机 matlab
  3. 用Eclipse 开发Dynamic Web Project应用程序
  4. WCF+Nhibernate 序列化的问题。
  5. “ u”到底是做什么的? “ git push -u原始主机”与“ git push原始主机”
  6. python编程培训多少钱-python培训一般多少钱?[python培训]
  7. es6 Set 结合 Array.from 用法
  8. VTK:可视化之StreamLines
  9. python读取调用摄像头并将读取视频写入视频文件
  10. (7)nginx: 搭建 nginx+php环境
  11. 公布自己的pods到CocoaPods trunk 及问题记录
  12. C++导入导出动态库
  13. 二次元HTML导航页网站源码
  14. python如何把数字转化成字符_python 定义一个dictpython如何将数字转化为字符串
  15. 【Vue】—计算属性
  16. 递推DP URAL 1586 Threeprime Numbers
  17. 如何加载和保存TXT、CSV、DAT文本文件
  18. 有没有永久免费的云服务器?看完这篇文章你就明白了!
  19. 电力物联网大数据平台架构及应用
  20. Android Studio配置优化最全详解

热门文章

  1. matlab画梯形并平移,matlab 批量处理梯形变形
  2. 区块链溯源项目的一点体会
  3. Driller源码阅读笔记(一)
  4. oracle 查询索引个数,Oracle数据库索引的创建和查询
  5. JavaScript 中的强制类型转换
  6. c语言地址符作用,C语言中指针和取地址符的关系
  7. 计算机体系-指令系统
  8. BZOJ5473: 仙人掌
  9. 逆滤波和维纳滤波(附Matlab完整代码)
  10. win10下samba 重新登录注销