曲径通幽论坛
标题:
base64 编码的转换
[打印本页]
作者:
beyes
时间:
2014-10-10 15:31
标题:
base64 编码的转换
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 的索引表:
[attach]3803[/attach]
实际上,base64 的转换,我们大可不必费时费力手动去转,网上转换工具大把,如果有兴趣,还可以自己编写一个。
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/)
Powered by Discuz! X3.2