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。

代码编辑器 加载中...
留空使用题目默认限制
{{resultStatus.text}}
正在加载运行记录...
乐编题库AI助手
人工客服
微信扫码联系客服
历史对话
{{ s.title || '未命名对话' }}
{{ s.created_at }}
暂无历史对话
我能帮助你什么?