William's Blog

Base-64编码学习笔记

Base-64编码原理

  Base-64编码的目的是将任意一组字节转换成由常见的文本字符组成的字符序列。Base-64编码的实现流程如下:

  1. 首先将待编码的二进制序列划分成多个块,每块包含6个bit。由于一个字节对应8个bit,可能会遇到二进制序列不能均分为多个块的情况,为了解决这一问题,需要在原来二进制序列的尾部填充0,使得二进制序列的长度为24(6和8的最小公倍数)的整数倍。

  2. 然后按照图1中所示的Base-64字母表(截图自维基百科)中的对应关系将拆分成的6位块映射成对应的字符。对于完全填充块(完全不包含原始二进制序列中bit位信息的6位块)来说,其由特殊的第65个字符”=”表示。

base-64字母表

图 1 Base-64字母表

Base-64编码实例

  以对字符串”OK”进行Base-64编码为例,其编码过程如下。

  1. 将字符 “O” 和 “K” 的ASCII编码值以二进制的表示。 “O” 对应的二进制序列为 “01001111”,“K” 对应的二进制序列为 “01001011”。字符串 “OK” 对应的二进制序列为 “0100111101001011”。
  2. 在末尾填充字符串 “OK” 对应的二进制序列,使其长度达到24的整数倍。填充后的二进制序列为 “010011110100101100000000”。
  3. 经过填充后的原字符串对应的二进制序列可以均分为四个6位块,分别为 “010011”、“110100”、“101100”、“000000”。
  4. 将非完全填充块转换成十进制数,查阅图1中所示的Base-64字母表实现编码映射。对于完全填充块而言,将其映射为字符”=”。“010011” 映射为字符 “T”、“110100” 映射为字符 “0”、“101100” 映射为字符 “s”、“000000” 映射为字符 “=”。
  5. 对字符串进行Base-64编码后得到的常见的文本字符序列为 “T0s=”。

William

本博客作者 William 现任职于北京贝壳找房,从事web前端开发相关工作。
您可以通过Email与他取得联系