跳到主要内容

JS字符转Base64方法

Base64 小记

  • Base64 是一种编码方式,基于64个可打印字符来表示二进制数据;
  • 通过 Base64 编码,每3*8bit的字节,会被转化成4*6bit的字节,不足6位的使用00进行补足;不足4组的,使用 = 进行补充;因此就有了常听到的 Base64 编码后的数据比编码之前大 1/3 的说法;
  • 以字符串 a 为例,a 转化成二进制为 01100001,取前 6 位 011000 为第一组,后 2 位为第二组但不足 6 位需要使用 00 补足,补足之后为 010000;只有2组,后两组需要使用 = 值进行补充;
  • 由此编码后 base64 长度为 4 的倍数,不足使用 = 进行填充;
  • base64 由 0-9A-Za-z 及 +/ 组成;在 URL 中使用 base64 时,/ 容易与路径符号发生冲突;因此,URL Safe Base64 将 + 替换为 _/ 替换为 -

Base64具体转换方式

  1. 查询字符的对应的 ASCII
  2. 将字符对应的 ASCII 值转化成二进制
  3. 将转化后的二进制每六个分为一组(共有 64 中可能 ),将这一组二进制转化成十进制数字(0-63)
  4. 十进制数字就是字符串在[[Base64速查表]]中对应的Index,可根据Index查询对应的Base64 字符值

以字符串“a”为例,

  1. a对应的ASCII 值为97
  2. 97 对应的二进制为 01100001
  3. 二进制前6位为 011000,对应的十进制为24
  4. 二进制后2位为01 需再补4个0,组成一个新的二进制010000,对应的十进制为 16
  5. 24在 [[Base64速查表]]中对应的是Y,16在[[Base64速查表]]中对应的是Q
  6. 所以字符串a转化成base64的值为YQ==

参考地址: