曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3579|回复: 0
打印 上一主题 下一主题

base64 编码的转换

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2014-10-10 15:31:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
base64 编码,是用 64 个可打印字符来表示二进制数据。这 64 个可打印字符为:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

26 个大写字母,26 个小写字母,10 个阿拉伯数字,一个 + 号,一个 / 符号,总共 64 个。


以每 6 个比特位为一个单元来转换,对应上面某个字符。

转换方法

比如要转换小写字符 a (二进制为  0110 0001)。


先拿出前面 6 个位 011000,其值为 24 ,那么对应的的字符是大写 Y 。那么剩下的的 01 要怎么办?答案是要用 0 来补足,于是扩展开来有 010000,其值为 16,对应的字符是大写 Q 。补足了之后,一共产生了 12 个比特位,那计算机里是以字节来表示的,所以应该再补足 0 ,凑成 24 个比特位,即 3 个字节,于是总的有:011000 010000 000000 000000 。这样,后面就多了 2 组 6 比特位,这种通过补足 0 得来的,规定用等于号(=)来代替,因此 a 转换为 base64 后结果为 YQ== 。


再来看另一个例子,转换两个大写字母 BD ,这两个大写字母的二进制表示为: 01000010 01000100 。先每 6 个比特位来分,则有:010000 100100 0100 。前面 2 组(值分别为 16 和 32)可以转换为 Q 和 k 。那么剩下 0100 ,怎么办?依然是补足,添 0 补为 6 位,则有: 010000,其值为 Q。到现在为止,已经有了 18 个比特位,我们应当凑成 3 个字节,即 24 个比特位,因此后面 6 位都为 0,这用一个 = 号来表示。因此最后的转换结果为 QkQ= 。

下图是 Base64 的索引表:


实际上,base64 的转换,我们大可不必费时费力手动去转,网上转换工具大把,如果有兴趣,还可以自己编写一个。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-4-25 18:11 , Processed in 0.076462 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表