Appearance
Base64 转换工具
知识点
Base64 编码原理
Base64 利用 64 个字符(A-Za-z0-9+/
)编码文本,原理是将字符串以每 3 个 8 比特(bit)的子序列拆分成 4 个 6 比特(bit)的子序列,再将得到的子序列查找 Base64 编码索引表,得到对应的字符拼接成新的字符串的一种编码方式
a
的二进制为0110 0001
b
的二进制为0110 0010
2
的二进制为0011 0010
Base64 编码索引表
Y
的二进制为0110 00
W
的二进制为0101 10
I
的二进制为0010 00
y
的二进制为1100 10
划分前 0110 0001、0110 0010、0011 0010,即 a、b、2
划分后 0110 00、0101 10、0010 00、1100 10,按照 Base64 编码表 Y、W、I、y
所以 ab2
的 Base64 编码为 YWIy
为什么 Base64 编码后的大小是原来的 4/3 倍?
因为一个字节需要 8 个比特存储,所以我们要把 6 个比特往前面补两位 0,补足 8 个比特。如下所示
补足前 0110 00、0101 10、0010 00、1100 10
补足后 000110 00、000101 10、000010 00、001100 10
很明显,补足后所需的比特为 32 个,是原来所需的 24 个的 4/3 倍,所以 Base64 编码后的大小是原来的 4/3 倍
Base64url 与 Base64 的区别
标准 Base64 字符串的 +
、/
在 url 里会被编码成 %2B
, %2F
,这样会让 url 更长,所以出现了一种变种 base64url
,采用 64 个字符(A-Za-z0-9-_
)编码文本