Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一.

Base64的转换原理是:

把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。
Base64编码规则:
Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 “=”,因为:
      余数 = 原文字节数 MOD 3 
所以余数任何情况下都只可能是0,1,2这三个数中的一个。如果余数是0的话,就表示原文字节数正好是3的倍数(最理想的情况啦)。如果是1的话,为了让Base64编码是3的倍数,就要补2个等号;同理,如果是2的话,就要补1个等号。

举例如:字符串“Test“

对应的ASCII二进制码分别为: 01010100  01100101  01110011  01110100

按其编码规则将分为两组

组一:01010100  01100101  01110011

组二:01110100  00000000  00000000

对组一进行转换:00010101  00000110  00010101  00110011

      对应十进制:    21                6              21           51

对组二进行转换:00011101  00000000

      对应十进制:    29               0

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

15 P 32 g 49 x

16 Q 33 h 50 y

 由Base64转换规则和以上Base64编码转换表得到转换后值为:VGVzdA==

 

 

 

 

 posted on 2011-04-13 14:05  john chen  阅读(557)  评论(0编辑  收藏  举报