Base64 编码
题目说明
小王在学习信息技术时,对编码产生了浓厚的兴趣,她听老师说Base64 编码是计算机常见 的一种编码方式,于是她决定尝试自己编写一个简单的Base64 编码工具。经过她的研究, 发现Base64 编码规则是把 3 个字节(24 位)的数据按 6 位一组分成4组(24÷6=4),然后 将每组数据分别转换为十进制,根据图 1 将这些十进制数所对应的字符连接,即为 Base64 编码。

以编码字符“Win”为例,如图 2 所示,字符“Win”对应的 ASCII 编码分别是 87,105,110, 分别转换为8位二进制数,按 6 位二进制数分组后再转换成十进制,查找它们对应的字符, 得到 “Win”的 Base64编码为“V2lu”。

编写一个 Python 程序,实现上述功能。程序运行时,输入若干个字符(个数必须是 3 的 倍数),输出 Base64 编码。实现上述功能的 Python 代码如下,请在划线处填入合适的 代码。
s1=input("请输入编码字符:")
tmp=0
s=""
ans=""
Base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
for x in s1:
①
t=""
for i in range(8): #将十进制数 n 转换为 8 位二进制
r=n%2
②
n=n//2
s=s+t
for i in range(len(s)): #6位二进制一组转换成十进制,查找 Base64 对应字符
③
if i%6==5:
ans=ans+Base64[tmp]
④
print("Base64编码:",ans)
评分标准
(1)n=ord(x) 或等效答案;(2分)
(2)t=str(r)+t 或等效答案;(2分)
(3)tmp=tmp2+int(s[i]) 或 tmp=tmp2+ord(s[i])-ord('0') 或等效答案;(3分)
(4)tmp=0 或等效答案。(3分) 说明:①处应逐个获取编码字符的ASCII编码,再接下来的for循环中转换为8位二进制, 除基取余逆序排列,因此②处应是逆序排列,答案是str(r)+t。每次循环将每个编码字符 转换为八位二进制。③处应该将②处转换的所有二进制六位一组转换为十进制,所以③处 应该是按权相加转换为十进制即可。④处,实现6位一组的功能,将得到的十进制转换为 相应的Base64编码,之后转换下一个6位一组,临时变量tmp清0。
本题为编程题,提交代码并运行通过测试点后判分。