Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。(将字符串转换为二进制,从前往后,每6位一取,作为新的字节) 
 例如字符串“张3” :
 11010101 11000101 00110011 
 转换后:
 00110101 00011100 00010100 00110011 
 用十进制表示即为:53 34 20 51 
 这个并不是最终的结果,还需要根据Base64的编码表查询出转换后的值。下面就是BASE64编码表:
 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 (pad) = 
 14 O 31 f 48 w 
 15 P 32 g 49 x 
 16 Q 33 h 50 y 
 以上一共是64个编码,这也是Base64名称的由来(基于长度为64的编码表),编码的编号对应的是得出的新字节的十进制值。因此,上例中字符串“张3”经过编码后就成了字符串“1iUz”了。 
当待编码的字节数量不是3的整数倍时,字节数/3的余数自然就是2或者1。转换的时候,每6位一取,剩下的不够6位的在前面用0来补,之后再在每个6位的前面补两个0形成一个8位的字节。转换完不足4个字节的用“=”来补足(即:Base64的最终编码长度一定是4的整数倍)。譬如结果若最后余下的为2个字节的“张”: 
 字符串“张” 
 11010101 HEX:D5 11000101 HEX:C5 
 00110101 00011100 00010100 
 十进制53 十进制34 十进制20 pad 
 字符’1’ 字符’i’ 字符’U’ 字符’=’ 
 这样,最后的2个字节被整理成了“1iU=”。 
 同理,若原代码只剩下一个字节,那么将会添加两个“=”。只有这两种情况,所以,Base64的编码最多会在编码结尾有两个“=”