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

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值