【转】Base 64 编码说明
1 Base 64编码
Base 64 编码采用了US-ASCII 的65个字符集,每个字符都由6位来表示(0- 2 6-1),而第65位字符“=”用来表示字符串的结束。
|
Value |
Encoding |
|
Value |
Encoding |
|
Value |
Encoding |
|
Value |
Encoding |
|
0 |
A |
17 |
R |
34 |
i |
51 |
z |
|||
|
1 |
B |
18 |
S |
35 |
j |
52 |
0 |
|||
|
2 |
C |
19 |
T |
36 |
k |
53 |
1 |
|||
|
3 |
D |
20 |
U |
37 |
l |
54 |
2 |
|||
|
4 |
E |
21 |
V |
38 |
m |
55 |
3 |
|||
|
5 |
F |
22 |
W |
39 |
n |
56 |
4 |
|||
|
6 |
G |
23 |
X |
40 |
o |
57 |
5 |
|||
|
7 |
H |
24 |
Y |
41 |
p |
58 |
6 |
|||
|
8 |
I |
25 |
Z |
42 |
q |
59 |
7 |
|||
|
9 |
J |
26 |
a |
43 |
r |
60 |
8 |
|||
|
10 |
K |
27 |
b |
44 |
s |
61 |
9 |
|||
|
11 |
L |
28 |
c |
45 |
t |
62 |
+ |
|||
|
12 |
M |
29 |
d |
46 |
u |
63 |
/ |
|||
|
13 |
N |
30 |
e |
47 |
v |
64(pad) |
= |
|||
|
14 |
O |
31 |
f |
48 |
w |
|
|
|||
|
15 |
P |
32 |
g |
49 |
x |
|
|
|||
|
16 |
Q |
33 |
h |
50 |
y |
|
|
|||
|
|
|
|
|
|
|
|
|
编码原理
输入串以24bits(3字节) 为一位组,输出为4个编码后的字符,编码过程从左到右。24位的输入组实际上是3个八位的单字节构成,编码时24位被视为4个6位(0-63)的组合,每个6位再按照base64字母表编码为一个字符。(编码时位的顺序?)
输出行每行不应多于76个字符,编码表中没有的字符将被忽略。
当输入位数小于24位时,右边补0直到位数构成6位的倍数。
换行符必须转换成由base64编码过的CRLF字符序列。
如果遇到“=”,则可说明已到达字符串结尾。
数据的结尾用“=”填充,下列为“=”使用的情况:
1) 当输入位数为24位的整数倍的时候,编码后的输出单元为4的整倍数,此时输出结尾没有“=”。
2) 若输入流的最后单位是8位时,末尾将会有两个“=”。
3) 若输入流的最后单位是16位,末尾将会有一个“=”。
程序流程:
1) 编码:输入-原文。
逐个扫描输入字节,每六位转换成base64字符,直到结束。注意换行,以及结尾“=”符号处理。
2) 解码:输入-译文base64代码
判断是否为合法字符,逐个输入译文符号,没3字节(24bits)进行一次处理。注意结尾“=”的处理。

浙公网安备 33010602011771号