#1102. Base64 decoder
Base64 decoder
题目背景
又是一年毕业季,我们的学长学姐们即将离开我们的校园。在离开之前,他们多多少少都会因为毕业论文或毕业设计影响。为了减少压力,『 winterl 』 现在就开始写毕业设计了,他现在需要完成毕业设计(校赛管理系统)的数据传输功能。为了防止数据在传输的过程中被黑客窃取,『 winterl 』 专门学习了密码学,打算使用 UTF-8 编码的 Base64 加密传输。
题目描述
现在,你需要帮助 『 winterl 』 对使用 Base64 的加密内容 进行解密。具体解密流程如下:
-
去除填充:先去掉末尾的
=( 或 个) -
字符反查:将每个字符反向映射为 位二进制值
-
位合并:每 个 位二进制值合并为 个 位二进制值(也就是 个字节)
若不够 个就舍弃无法变成字节的,如 000000 000111 舍弃末尾 0111
-
ASCII还原:将字节转为原始字符
Base64 字符表: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
输入格式
第一行,一个正整数 ,表示每个测试点有 组测试样例
对于每组测试样例
仅一行字符串 ,表示题目给定的Base64 的加密内容
其中 意为字符串 的长度
输入保证加密内容前的是
ASCII可见字符(空格除外)。
输出格式
一共 行,对于每行输出,打印每组测试样例的解码结果
样例输入输出
1
aGVsbG8gd29ybGQ=
hello world
10
SQ==
bG92ZWQ=
dG8=
dGhl
bW9vbg==
YW5k
YmFjaw==
YWdhaW4=
Lg==
SSBsb3ZlZCB5b3UgdG8gdGhlIG1vb24gYW5kIGJhY2sgYWdhaW4u
I
loved
you
to
the
moon
and
back
again
.
I loved you to the moon and back again.
样例解释
对于样例
-
去除填充:
aGVsbG8gd29ybGQ -
字符反查:
011010000110010101101100011011000110111100100000011101110110111101110010011011000110010000 -
位合并:
0110100001100101011011000110110001101111001000000111011101101111011100100110110001100100舍弃多余内容 -
ASCII还原:
helloworld
附录(Base64字符反向映射表)
| 字符 | 反向映射值 | 字符 | 反向映射值 | 字符 | 反向映射值 | 字符 | 反向映射值 |
|---|---|---|---|---|---|---|---|
| A | 000000 | B | 000001 | C | 000010 | D | 000011 |
| E | 000100 | F | 000101 | G | 000110 | H | 000111 |
| I | 001000 | J | 001001 | K | 001010 | L | 001011 |
| M | 001100 | N | 001101 | O | 001110 | P | 001111 |
| Q | 010000 | R | 010001 | S | 010010 | T | 010011 |
| U | 010100 | V | 010101 | W | 010110 | X | 010111 |
| Y | 011000 | Z | 011001 | a | 011010 | b | 011011 |
| c | 011100 | d | 011101 | e | 011110 | f | 011111 |
| g | 100000 | h | 100001 | i | 100010 | j | 100011 |
| k | 100100 | l | 100101 | m | 100110 | n | 100111 |
| o | 101000 | p | 101001 | q | 101010 | r | 101011 |
| s | 101100 | t | 101101 | u | 101110 | v | 101111 |
| w | 110000 | x | 110001 | y | 110010 | z | 110011 |
| 0 | 110100 | 1 | 110101 | 2 | 110110 | 3 | 110111 |
| 4 | 111000 | 5 | 111001 | 6 | 111010 | 7 | 111011 |
| 8 | 111100 | 9 | 111101 | + | 111110 | / | 111111 |