为什么叫base64
因为它是基于64个字符进行的编码
A-Z
-- 0 - 25
a-z
-- 26 - 51
0-9
-- 52 - 61
+
-- 62
/
-- 63
26 + 26 + 10 + 1 + 1 = 64
为什么需要base64
简单说是因为一些特殊字符无法传输,而通过base64编码之后就都是普通字符
如何进行base64编码
首先我们要知道
一个字节等于8个二进制位
1Byte = 8bit
base64以3个字节也就是24个二进制位为一组,到时候解析也是以3个字节去解析
base64是以6个二进制位为一个单元进行解析,而字符是以8个二进制位为一个单元
6和8的最小公倍数是24,所以base64编码以24个二进制位为一组。这样,保证每一组base64编码能对应3个字节。
下面来看如何进行编码 对 abc 进行编码
- abc
- 将
abc
转换为ASCII码 得到
a - 97
b - 98
c - 99 - 将97、98、99转换为8位二进制 得到
97 -01100001
98 -01100010
99 -01100011
- 所以这个abc的二进制表示就是
011000010110001001100011
- 然后每6位为一个单元取
011000
010110
001001
100011
- 转换为10进制 得到
24
22
9
35
- 根据base64的编码表得到
Y
W
J
j
所以最终abc的base64编码就是 YWJj
那么对于不足24个二进制位的如何处理
比如 ab
转换之后得到的二进制是 01100001
、 01100010
按base64分组之后是 011000
010110
0010
第三组不足6位,通过补0 凑齐6位,结果如下
011000
010110
001000
按base64编码表得到 YWI
此时不足一组,通过=补齐一组
所以最终结果是 YWI=
中文的base64编码
中文需要看按哪种编码来进行转换 然后再进行base64编码