用SMTP,POP3访问Exchange邮箱:Exchange2003系列之六
2008-11-21 00:00:00 来源:WEB开发网五 BASE64编码
BASE64编码其实很简单,它把常用的64个字符重新做了个编码表。每个BASE64编码用6个2进制数表示,BASE64的编码表如下
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
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
从ASCII码向BASE64的转换过程中,ASCII码会每3个为一组转换为4个BASE64编码,因为每个ASICC码为8位二进制数,3×8=24,每个BASE64编码是6位二进制数,24÷6=4。
如果ASCII码字符不正好是3的倍数,例如dufei是5个ASCII码,这该怎么办呢?系统会自动用0进行填充,将ASCII码凑成3的倍数。如果有1个ASCII码是被填充的,BASE64编码中会出现一个=符号,如果有2个ASCII吗是被填充的,BASE64编码中会出现两个=号,不可能有三个=出现的,大家仔细想想为什么?
以dufei为例,dufei的ASCII码为 100 117 102 101 105, ASCII码为100 117 102 101 105 。展开成二进制是 01100100 01110101 01100110 01100101 01101001,每6个一组形成BASE64编码是 011001 000111 010101 100110 011001 010110 1001,由于dufei只有5个ASCII码,系统会用0填充为6个ASICC码,填充的结果是011001 000111 010101 100110 011001 010110 100100 000000,蓝色部分为系统填充内容。用10进制表示就是 25 7 21 38 25 22 36 ,查询BASE64编码表 可知分别对应 ZHVmZWK,最后那个由填充产生的000000用一个=表示。所以最后我们看到的BASE64编码是ZHVmZWk= 。
本文出自 “岳雷的微软网络课堂” 博客,请务必保留此出处http://yuelei.blog.51cto.com/202879/76302
更多精彩
赞助商链接