Base64是一种用64个字符来表示任意二进制数据的方法。
首先,准备一个包含64个字符的数组:['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']
 
然后对要编码的数据的二进制形式进行处理,每3个字节划分为有组,没个字节8bit,一共24bit。将这24个bit进行重新划分,划分为4组,每组6位,0 ~ 2^6-1, 可以表示范围为0~63,共64位,对应上述64个字符的数组,用于查表。
 
所以,Base64编码会把3字节的二进制数据编码为4字节的文本数据,长度增加33%,好处是编码后的文本数据可以在邮件正文、网页等直接显示。

如果要编码的二进制数据不是3的倍数,最后会剩下1个或2个字节怎么办?Base64用\x00字节在末尾补足后,再在编码的末尾加上1个或2个=号,表示补了多少字节,解码的时候,会自动去掉。(这就是为啥vid中会出现==这样的东西)
 
Python内置的base64可以直接进行base64的编解码

最新文章

  1. Altium Designer 常用的快捷键
  2. jdk分析工具:jps和jstack
  3. Java高级之线程同步
  4. drop,delete,truncate区别
  5. asp.net OnInit、OnLoad、Page_Load、Page_Init父子页面执行顺序探究
  6. 转载 在 Linux 虚拟机中手动安装或升级 VMware Tools
  7. JSP学习--常用作用域
  8. java的表达式
  9. android UI进阶之弹窗的使用(2)--实现通讯录的弹窗效果
  10. word2016怎么从第三页开始设置页码
  11. Python实现简易端口扫描器
  12. SQL瓶颈分析,以及适应最佳执行计划的探讨
  13. java java.net.URLConnection 实现http get,post
  14. powerdesigner添加mysql的字符集支持
  15. SSM文件下载
  16. 【疑点】js中的break,continue和return到底怎么用?
  17. PCL点云配准(2)
  18. XenServer:使用XenCenter开设VPS(多图完整版)
  19. NVMe on RHEL7
  20. beyond compare比较工具设置

热门文章

  1. ES6中块作用域之于for语句是怎样的?
  2. Android中View的基础知识
  3. UnityContainer 实现DI
  4. iOS沙盒处理
  5. Swift 2.0 异常处理
  6. MyEclipse Java Build Path详解
  7. Mac下使用firefoxdriver
  8. Duilib开发环境搭建
  9. 捉虫记(四)线程安全导致的HighCpu
  10. Hadoop YARN中内存的设置