base64_encode() 和 base64_decode() 05 December 2009 23:38 Saturday by 小屋 浏览(2201)

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。 Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3



php 的函数:base64_encode() 和 base64_decode()



base64的编,解码原理



Base64 编码其实是将3个8位字节转换为4个6位字节,( 3*8 = 4*6 = 24 ) 这4个六位字节 其实仍然是8位,只不过高两位被设置为0. 当一个字节只有6位有效时,它的取值空间为0 到 2的6次方减1 即63,也就是说被转换的Base64编码的每一个编码的取值空间为(0~63) 。



事实上,0~63之间的ASCII码有许多不可见字符,所以应该再做一个映射,映射表为



'A' ~ 'Z' ? ASCII(0 ~ 25)



'a' ~ 'z' ? ASCII(26 ~ 51)



'0' ~ '9' ? ASCII(52 ~ 61)



' ' ? ASCII(62)



'/' ? ASCII(63)



这样就可以将3个8位字节,转换为4个可见字符。



具体的字节拆分方法为:(图(画得不好,领会精神 :-))



aaaaaabb ccccdddd eeffffff    //abcdef其实就是1或0,为了看的清楚就用abcdef代替



~~~~~~~~ ~~~~~~~~ ~~~~~~~~



字节 1 字节 2 字节 3

阅读全文>>