1.什么是Base64

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

2.Base64编码原理

Base64编码之所以称为Base64,是因为其使用64个字符来对任意数据进行编码,同理有Base32、Base16编码。标准Base64编码使用的64个字符为:

有点特殊的是最后两个字符,因对最后两个字符的选择不同,Base64编码又有很多变种,比如用于编码URL的Base64 URL编码。

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

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

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

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

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

3.Base64编码应用

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

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

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

4.适用场景

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

本文学习网上资料整理而来,仅供个人学习使用,部分内容仅代表个人理解及思考。
主要参考
http://blog.xiayf.cn/2016/01/...
http://blog.csdn.net/zdy0_200...

Base64基本原理相关推荐

  1. Base64编码运用与基本原理

    编码说白了就是按照一定规则对数据进行转换,工作原理有点类似于查字典,base64编码(叫base64的原因是因为其使用64个字符来对任意数据进行编码)可以用来将图片或者其他文件的二进制数据转换成字符串 ...

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

  3. OpenSSL使用3(基本原理及生成过程)(转)

    1. 基本原理 OpenSSL初接触的人恐怕最难的在于先理解各种概念 公钥/私钥/签名/验证签名/加密/解密/非对称加密 我们一般的加密是用一个密码加密文件,然后解密也用同样的密码.这很好理解,这个是 ...

  4. Spring Security构建Rest服务-0600-SpringSecurity基本原理

    一.引入 只要引入了spring-boot-starter-security,所有的服务都会被保护起来.启动项目,打开时所有的controller会被保护起来,随便访问一个,如http://local ...

  5. [译转] eBPF 概念和基本原理

    译文:https://cloud.tencent.com/developer/article/1749470 https://tonydeng.github.io/sdn-handbook/linux ...

  6. 【MIME协议】base64编码与quoted-printable编码

    文章目录 MIME概述 base64编码 基本原理 具体步骤 例题 quoted-printable编码 基本步骤 例题 ASCLL字符代码表 MIME概述 电子邮件协议SMTP通过连接建立.邮件传送 ...

  7. 不安全的文件上传基本原理(Unsafe file upload)

    不安全的文件上传基本原理(File upload vulnerabilities) 文章目录 不安全的文件上传基本原理(File upload vulnerabilities) 什么是文件上传漏洞? ...

  8. Base64系列第一篇 Base64介绍

    本文地址:http://blog.csdn.net/morewindows/article/details/11871429转载请标明出处,谢谢. 欢迎关注微博:http://weibo.com/Mo ...

  9. Windows提权基本原理,各位表哥了解下!

    Windows提权基本原理 没有多少人谈论在Windows下提权,是一件让人遗憾的事!我想,没有人这么做的理由有以下几点: 在渗透测试项目中,客户需要的验证就是一个低权限shell. 在演示环境,你经 ...

  10. 2021-9-23 base64学习

    逆向解密 base64 基本概念: base64根据百度的查询,定义如下:Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方 ...

最新文章

  1. 史上最受程序员待见的计算机入门读物——图解X系列
  2. 【队列源码研究】消息队列beanstalkd源码详解
  3. jquery学习(六)-jquery中的动画
  4. VR不仅用于游戏!HTC Vive显示美国市长VR用于城市规划
  5. ubuntu20输入法qiehuan_Ubuntu20.04安装搜狗输入法
  6. 纪念一下我2020年的努力结果,腾讯云社区创作总结
  7. php键值对数组排序,PHP按指定键值对二维数组进行排序的方法_PHP
  8. 管理软件实施(5)——实施先了解下售前工作的特点(上)
  9. java程序经过编译后会产生byte code_Java 虚拟机(JVM)内存模型
  10. Java变量的初始化问题探究
  11. 计算机初试占比高的学校,复试压力小,初试占比70%及以上的院校汇总!
  12. 引领架构创新之路第八届系统架构师大会撼世来袭
  13. SQL基础教程读书笔记
  14. 调通sina33下的AP6212A0(WIFI+BT)(V1.1版本)
  15. 计算机思维在化学上的应用,【科学思维】化隐性为显性思想在化学中的应用
  16. windows powershell激活anaconda虚拟环境
  17. php七牛云,php七牛云
  18. 关于消防系统安装的一些规范
  19. vLive虚拟直播,助力企业打造线上云年会
  20. PHP学习笔记:环境变量

热门文章

  1. THREEJS基础入门
  2. esp8266开发入门教程(基于Arduino)——点亮RGB灯
  3. QAM信号的调制解调原理
  4. OFD文件在线阅读器
  5. 8uftp怎么上传文件,8uftp怎么上传文件
  6. qqkey获取原理_征途手机版电脑版安装使用教程【安卓+ios电脑版图文攻略】
  7. 通过bat文件一键配置电脑IP
  8. 数据仓库分层的原因和好处
  9. Excel填充日期和星期
  10. 电子签章引入jar包