Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:1 s 空间限制:256 MB
Statistics

题目描述

实现 Base64 编码算法,将任意二进制数据转换为可打印字符格式。Base64 编码规则如下:
1.使用 64 个字符作为编码表:A-Z(26个大写字母)、a-z(26个小写字母)、0-9(10个数字)、+ 和 /
2.每 3字节 原始数据转换为 4字节 编码数据
    a.将3字节数据拆分为24位二进制
    b.将24位数据重新划分为4组6位数据
    c.将6位数据转换为十进制索引
    d.根据索引在Base64表中查找对应字符
3.当原始数据长度不是 3 的倍数时:
    剩余 1字节:补 ==
    剩余 2字节:补 =

输入格式

输入一行字符串 s(长度 ≤ 1024),可能包含任意字符(包括空格、标点、非 ASCII 字符)

输出格式

输出一行字符串,表示 Base64 编码结果

样例数据

input

Hello World

output

SGVsbG8gV29ybGQ=

样例解释

1.将3字节数据拆分为24位二进制: 
字符串“Hello World”前三个字符“Hel”对应的字节如下
字节1: 01001000
字节2: 01100101
字节3: 01101100
2.将24位数据重新划分为4组6位数据:
原始分组: [01001000] [01100101] [01101100]
重新分组:
  第1组: 010010
  第2组: 000110 (字节1后2位 + 字节2前4位)
  第3组: 010101 (字节2后4位 + 字节3前2位)
  第4组: 101100 (字节3后6位)
3.将6位数据转换为十进制索引:
010010 -> 18
000110 -> 6
010101 -> 21
101100 -> 44
4.根据索引在Base64表中查找对应字符:
18 -> 'S'
6  -> 'G'
21 -> 'V'
44 -> 's'
最终编码: "SGVs"