• 什么是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、网页中的图片等传输二进制数据。

  • 相关阅读:
    Golang vs Rust ——服务端编程应该选择哪种语言
    SAP S4 FI后台详细配置教程- PART5 (应收帐目和应付帐目配置篇)
    java计算机毕业设计Web端校园报修系统MyBatis+系统+LW文档+源码+调试部署
    JAVA语言学习-面向对象(1)
    瑞吉外卖 —— 11、项目优化:使用 Redis 缓存
    this 内存原理
    SpringBoot网上书城的设计与实现源码+文档
    50个常用的Numpy函数解释,参数和使用示例
    Close 和 Dispose 方法到底有什么不同?
    AR编程入门:解锁虚拟与现实交融的新世界
  • 原文地址:https://blog.csdn.net/weixin_40763897/article/details/126314371