Base64 转 图片,请参考 Base64 转图片
ASCII 码字符占 8 位二进制,而 Base64 占 6 位,取最小公倍数即为 24,即可以用 4 个 base64 字符去表示 3 个 ASCII 码字符。一个字节 8bit 存在 256 个状态,而一个 Base64 字符只有 64 个状态。
机智的人们于是规定,用每 4 个 Base64 字符去表示 3 个二进制字节,因为:64 * 64 * 64 * 64 = 256 * 256 * 256。
因为,Base64 将三个字节转化成四个字节,因此 Base64 编码后的文本,会比原文本大出三分之一左右。
选出 64 个字符——大写字母 A-Z、小写字母 a-z、数字 0-9、符号 "+"、"/"(再加上作为垫字的 "=",实际上是 65 个字符,垫字是当生成的 Base64 字符串的个数不是 4 的倍数时,添加在尾部的字符),作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。
比如字符串 ABC,对应的二进制序列为 01000001 01000010 01000011,按 6 位分组后为 010000 010100 001001 000011,根据编码表得到Base64 字符串 QUJD。
Base64 编码表
码值
二进制
字符
0
000000
A
1
000001
B
2
000010
C
3
000011
D
4
000100
E
5
000101
F
6
000110
G
7
000111
H
8
001000
I
9
001001
J
10
001010
K
11
001011
L
12
001100
M
13
001101
N
14
001110
O
15
001111
P
16
010000
Q
17
010001
R
18
010010
S
19
010011
T
20
010100
U
21
010101
V
22
010110
W
23
010111
X
24
011000
Y
25
011001
Z
26
011010
a
27
011011
b
28
011100
c
29
011101
d
30
011110
e
31
011111
f
32
100000
g
33
100001
h
34
100010
i
35
100011
j
36
100100
k
37
100101
i
38
100110
m
39
100111
n
40
101000
o
41
101001
p
42
101010
q
43
101011
r
44
101100
s
45
101101
t
46
101110
u
47
101111
v
48
110000
w
49
110001
x
50
110010
y
51
110011
z
52
110100
0
53
110101
1
54
110110
2
55
110111
3
56
111000
4
57
111001
5
58
111010
6
59
111011
7
60
111100
8
61
111101
9
62
111110
+
63
111111
/
|