• 什么是Base64?


    什么是Base64

    Base64编码是用于将二进制转换成对应的文本的技术。本章节就来了解它的编码规则。参考​​RFC-4648​

    Base64编码表
    在这里插入图片描述

    Base64编码表用了64个字符:A-Z、a-z、0-9、+ 、/,刚好是2的6次方,这也是Base64的由来,Base64每个字符用6个比特位来表示。最后还有一个=用作特殊用途,稍后会介绍,所以Base64编码表共有65个字符。

    编码规则

    首先将二进制数据按每6个比特位为一组编译成一个Base64的编码表中对应的一个字符。解码就是将Base64的字符依次还原回6位的比特位,以此得到原始的二进制数据了。

    例子

    编码:

    1. 待编码字符:Man
    2. 对应的二进制:M(01001101)a(01100001)n(01101110)
      01001101 01100001 01101110
    3. 按每6个比特位为一组来对二进制进行划分:010011 010110 000101 101110
    4. 将6位进制编译成Base64对应的字符:T W F u,那么Man的Base64编码结果就是TWFu了。

    解码:
    解码就是上面过程的逆过程。按Base64编码表,将Base64字符解码出对应的6位二进制,进而得到原始的二进制数据。

    例外

    在编码的过程种有三种情况需要特殊处理一下。

    • 第一种:待编码的二进制只有24位,此时刚好能分成4组,编码结果就是4个字符,没有=号,如Man有24位二进制,结果就是TWFu。
    • 第二种:待编码的二进制只有16位,那么编码的结果就是3个字符跟上一个=号,如Ma:
      Ma的二进制:01001101 01100001
      分组结果:010011 010110 0001
      根据​​RFC-4648​​的规范,对于这种情况,将在最后用0补齐6位,得到:010011 010110 000100
      对应Base64的编码就是TWE,为了能在解码时能识别出最后有补齐的两个0,以便去掉,要跟上=作记号,所以Ma最终的Base64编码就是TWE=
    • 第三种:待编码的二进制只有8位,Base64编码结果应该是两个字符,跟上两个=号,如M:
      M的二进制:01001101
      分组结果:010011 01
      根据​​RFC-4648​​的规范,对于这种情况,将在最后用0补齐6位,得到:010011 010000
      对应Base64的编码就是TQ,为了能在解码时能识别出最后有补齐的4个0,以便去掉,要跟上两个=作记号,所以M最终的Base64编码就是TQ==

    Base64的用途

    Base64经常用来在不同环境下存储或传输数据。如在处理文本数据的场景中,用于表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据,Base64也被用在URL(但有些特殊,请参考RFC-4648中的说明)、Cookie、网页中的图片等传输二进制数据。

  • 相关阅读:
    LeetCode·899.有序队列·最小表示法
    【csdn第十期竞赛】dp专场
    【超简单-Java设计模式2】简单工厂模式
    C++内存管理与模板初阶
    【数字信号去噪】小波阙值数字信号去噪和求信噪比【含Matlab源码 2191期】
    keep-alive缓存三级及三级以上路由
    Visual Studio部署C++矩阵库Armadillo的方法
    双向电平电压转换器TXS0102DCTR应用电路设计
    动力学重构/微分方程参数拟合 - 基于模型
    halcon学习和实践(颜色筛选)
  • 原文地址:https://blog.csdn.net/weixin_40763897/article/details/126314371