Linux系统下发送Email的C语言代码(2)
文章作者 100test 发表时间 2007:03:14 16:38:53
来源 100Test.Com百考试题网
过程很明显了,再简单说说base64编码方式:可以将字符串3个3个的分开(不足的编码后以 = 补),我们知道每个字符8位,这样,3个字符就是24位,base64编码将这3个字符(24位),6位6位的分开,分成4个字符,再将这4个字符的ascii码值与下面的表比较,取出相应的字符,就是编码后的最终字符。例如:abc这3个字符,编码前是这样的:
0110 0001 0110 0010 01100011 |
现在6位6位的重组:
011000 010110 001001 100011 |
得到的字符为:
00011000 00010110 00001001 00100011 |
ascii码值分别为:24 22 9 35。对照下面表,得出编码后的字符:YWJj。从程序的思路来看就是:
1。a>>2
2.(a&.0x03)<<4 | (b>>4)
3.(b&.0x0f)<<4 | (c>>6)
4.c&.0x3f |
然后将得到的值对照下表就可得出编码后的字符,具体实现见代码。Base64编码转换表(摘自RFC2045)
Table 1: The Base64 Alphabet
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
14 O 31 f 48 w (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y |