BASE64编码介绍

 
定义 MIME 文档传输的 RFC2045 定义了 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 字节 1     字节 2   字节 3 转化为: 00aaaaaa 00bbcccc 00ddddee 00ffffff 注:上面的三个字节位原文,下面四个字节为 Base64 编码,其前两位均为 0 这样拆分的时候,原文的字节数量应该是 3 的倍数,当这个条件不能满足时,用全零字节补足,转化时 Base64 编码用 = 号代替,这就是为什么有些 Base64 编码以一个或两个等号结束的原因,但等号最多有两个,因为:如果 F(origin) 代表原文的字节数, F(remain) 代表余数,则 F(remain) = F(origin) MOD 3 成立。 所以 F(remain) 的可能取值为 0,1,2. 如果设 n = [F(origin) – F(remain)] / 3 F(remain) = 0 时,恰好转换为 4*n 个字节的 Base64 编码。 F(remain) = 1 时,由于一个原文字节可以拆分为属于两个 Base64 编码的字节,为了让 Base64 编码是 4 的倍数,所以应该为补 2 个等号。 F(remain) = 2 时,由于两个原文字节可以拆分为属于 3 Base64 编码的字节,同理,应该补上一个等号。
具体实现请查看:
                                      base64 源程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值