程序设计能力实训

1156. Base64编码

单点时限: 2.0 sec

内存限制: 256 MB

Base64 编码是一种编码方式,通常用于把二进制数据编码为 64 个可打印字符数据。

Base64 编码采用的 64 个可打印字符为:A-Z、a-z、0-9、+、/

64 个字符只需要用 6 位二进制来表示,对应的十进制数值为 0~63。

长度为 3 个字节(24 位)的数据经过 Base64 编码后就变为 4 个字符。

例如,字符串 “Man” 经过 Base64 编码后为:”TWFu”。其编码过程如下:

第一步,’M’、’a’、’n’ 三个字符的 ASCII 码分别是 77、97、110,对应的二进制值是 01001101、01100001、01101110,将它们连成一个 24 位的二进制串 010011010110000101101110。

第二步,将这个 24 位的二进制串分成 4 组,每组 6 个二进制位:010011、010110、000101、101110。

第三步,在每组前面加两个 00,扩展成 32 个二进制位,即四个字节:00010011、00010110、00000101、00101110。它们的十进制值分别是 19、22、5、46。

第四步,根据上面对照表,得到每个值对应 Base64 编码,即 T、W、F、u。

如果待编码数据的字节数不是 3 的倍数,则其位数不是 6 的倍数,则需在原数据后面添加若干个 0,使其位数是 6 的倍数。

如果转换后不满 4 个字符,后面用等号 (=) 填充。

例如,字符串 “A” 经过 Base64 编码后为:”QQ==”。其编码过程如下:

例如,字符串 “+p” 经过 Base64 编码后为:”K3A=”。其编码过程如下:

输入格式

1 行:一个整数 T1≤T≤10)为问题数。

接下来 T 行,每行输入一个字符串,字符串长度不超过 100 字符。

输出格式

对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等)。然后对应每个问题在一行中输出 Base64 编码后的结果。

样例

Input
3
A
Man+p
Man
Output
case #0:
QQ==
case #1:
TWFuK3A=
case #2:
TWFu
不限期开放

题目列表