1. 什么是Base64编码
    Base64 就是指64个字符,包括大小写字母[A-Z、a-z],阿拉伯数字[0-9],还有两个字符[+、/],两外还有一个表示后缀的字符 [ = ],Base64就是指只能传输这64个字符

  2. Base64编码原理
    先提一下ASCII码, ASCII码的范围是0-127,其中0-31和127是控制字符,共33个。其余95个,即32-126是可打印字符,包括数字、大小写字母、常用符号等。Base64 就是将 ASCII码 用 Base64位字符表示
    Base64位只需要6个字符即可表示,而 ASCII码 需要8个字符位,这就是常说的,Base64编码利用6bit字符来表达 ASCII码 8bit字符

  3. 使用Base64编码的优缺点

    1. 编码之后的字符串可以直接内联到HTML中显示,比如,我们一些体积比较小的图片,就可以转换成 Base64编码,直接插入到图片的 src 路径中
    2. 采用 Base64编码之后,数据体积通常是原数据的体积4/3
  4. Base64编码原理具体解析

    1. 首先,6bit显然不够容纳8bit的数据。6和8的最小公倍数是24,所以我们用4个Base64字符刚好能够表示三个传统的8bit字符。如下所示,字符串Man的编码图解如下
      Man的编码结果为TWFu,显然,Base64编码会多1/3的长度,这也解释了文中开头的疑问,为什么Base64编码后的体积会大1/3。
      Man这个字符串的长度刚好是3,我们能用4个Base64来表示。如果待编码的字符串长度不是三的倍数时应该怎么处理呢?
      这是需要做一个特殊处理,假设待编码字符串长度为10。这前9个字符可以用12个Base64字符表示。第10个字符的前6bit作为一个Base64字符,剩下的2bit后面需要先补0,补到6位(此处补4个0)作为第二个Base64字符,至于第三个和第四个Base64字符,虽然没有相对应的内容,我们仍需以=填充。
      如下图所示,A对应的Base64编码为QQ==,BC对应的Base64编码为QkM=

    2 . 解码的过程比较简单。去掉末尾的等号=。剩下的Base64字符,每8bit组成一个8bit字节,最后剩余不足8位的丢弃即可

参考链接:
https://mp.weixin.qq.com/s/Pvq_zDKePlkW8SW4RT2xGg

前端 - base64原理浅析相关推荐

  1. Spring Security入门到实践(一)HTTP Basic在Spring Security中的应用原理浅析

    一.Spring Security简介 打开Spring Security的官网,从其首页的预览上就可以看见如下文字: Spring Security is a powerful and highly ...

  2. 前端Base64编码知识,一文打尽

    原文: https://juejin.cn/post/6989391487200919566 作者: 云的世界 掘金专栏: 前端基础进阶 健康满分 关注并将「趣谈前端」设为星标 每天定时分享技术干货/ ...

  3. 一文打尽前端 Base64 编码知识

    关注公众号 前端开发博客,回复"加群" 加入我们一起学习,天天进步 前言 本文收录在 前端基础进阶[1] 专栏,欢迎关注和收藏, 往期经典: [干货]私藏的这些高级工具函数,你拥有 ...

  4. Python标准库queue模块原理浅析

    Python标准库queue模块原理浅析 本文环境python3.5.2 queue模块的实现思路 作为一个线程安全的队列模块,该模块提供了线程安全的一个队列,该队列底层的实现基于Python线程th ...

  5. Python标准库threading模块Condition原理浅析

    Python标准库threading模块Condition原理浅析 本文环境python3.5.2 threading模块Condition的实现思路 在Python的多线程实现过程中,在Linux平 ...

  6. 第一篇: 词向量之Word2vector原理浅析

    第一篇: 词向量之Word2vector原理浅析 作者 Aroundtheworld 2016.11.05 18:50 字数 1353 阅读 5361评论 1喜欢 9 一.概述 本文主要是从deep ...

  7. SPI及其工作原理浅析

    说明.文章摘自:SPI协议及其工作原理浅析 http://bbs.chinaunix.net/thread-1916003-1-1.html 一.概述. SPI, Serial Perripheral ...

  8. .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析

    .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析 .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析 作者:&;nbsp来自:网络 htt ...

  9. 浅谈前端路由原理hash和history

    浅谈前端路由原理hash和history

  10. LinkedList 的实现原理浅析

    转载自 LinkedList 的实现原理浅析 LinkedList内部结构 查看LinkedList的源码,发现其继承自AbstractSequentialList,实现了List,Deque,Clo ...

最新文章

  1. git 恢复误删的分支
  2. 多级cache之间的替换(缓存)策略
  3. (2,1,3)卷积码与一种QC-LDPC码的译码性能对比
  4. Alluxio:2022年大数据五大趋势,多云下数据湖兴起,AI成为主流
  5. 整理了vue2.0的思维导图
  6. CVPR2021 | MIMO-VRN 用于视频缩放任务的联合训练策略
  7. iOS菜鸟之AFN的二次封装
  8. 数据结构与算法笔记总结
  9. 生成Ipa安装包的plist文件后生成下载链接
  10. html.dropdownlist 设置默认值,设置Html.DropDownList()的默认值
  11. linux脚本下载,linux_脚本编写基础
  12. SVN客户端安装与常用操作(超详细)
  13. 偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试
  14. OVF 和 OVA 文件格式和模板的区别
  15. java redis教程视频_2020年Java视频教程-Redis全集
  16. 手把手带你可视化分析 NBA 季后赛
  17. 从辉煌走向消亡(上)——小型机之王DEC公司
  18. android 清除某个通知,android清除通知栏消息
  19. 桌面天气时钟【心知天气API、可获取实时时间、合成解码cJSON】
  20. freeswitch mrcp 源码分析--数据接收(下)

热门文章

  1. centos7下安装zmap
  2. java ios开发_使用Java开发iOS应用
  3. tiff怎么批量转化成jpg或png?
  4. 黑域 绿色守护 安卓最好的省电工具?
  5. 非极大值抑制(Non-Maximum Suppression,NMS)
  6. 【材料计算】输入文件INCAR
  7. Idea导入项目及相关环境配置
  8. itools苹果录屏大师_录屏可以有声音,发照片可以免流量,计算器输错可回删
  9. 湖南省工业技师学院计算机证,湖南省工业技师学院
  10. numpy库的安装方法