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-9
、A-Z
、a-z
及+
、/
组成;在 URL 中使用base64
时,/
容易与路径符号发生冲突;因此,URL Safe Base64
将+
替换为_
,/
替换为-
Base64具体转换方式
- 查询字符的对应的
ASCII
值 - 将字符对应的
ASCII
值转化成二进制 - 将转化后的二进制每六个分为一组(共有 64 中可能 ),将这一组二进制转化成十进制数字(0-63)
- 十进制数字就是字符串在[[Base64速查表]]中对应的Index,可根据Index查询对应的
Base64
字符值
以字符串“a”为例,
- a对应的
ASCII
值为97 - 97 对应的二进制为 01100001
- 二进制前6位为 011000,对应的十进制为24
- 二进制后2位为01 需再补4个0,组成一个新的二进制010000,对应的十进制为 16
- 24在 [[Base64速查表]]中对应的是Y,16在[[Base64速查表]]中对应的是Q
- 所以字符串a转化成base64的值为YQ==
参考地址:
- Base64 Encoding/Decoding 及编码过程实时解析
- ASCII Table
- [[JS-计算机科学进制Base X]]