Base64编码转换
提交数: 400, 通过率: 49%, 平均分: 74.87
题目描述:
Base64编码是计算机中常见的一种编码方式,规则是把3个字节(24位)的数据按照6位1组分成4组(24/6=4),然后将每组数据分别转换为十进制,根据下表将这些十进制数所对应的字符连接,即为Base64编码。
你的任务是将输入的字符串按照每个字符的ASCII码转化为对应的二进制数,然后按照六位二进制位分组后转化为十进制,并将其转化成对应的Base64编码。输出得到的Base64编码。如果原文的字节数量不满足为3的倍数,则原文剩余的字节根据编码规则单独转,最后一段不够6位二进制位的后面用0补满6位,再用\( "="\)补全4个字符。
输入格式:
只有一行,是一个字符序列。
输出格式:
只有一行,输出该字符序列对应的Base64编码。
样例输入:
样例输入1: Web 样例输入2: WebM
样例输出:
样例输出1: V2Vi 样例输出2: V2ViTQ==
提示:
样例按照下表规则进行Base64编码
M字符对应的Base64编码为:TQ==
完善程序:
预备知识:二进制的移位运算, 左移1位,相当于乘以2, 右移1位,相当于除以2,取末尾1位,对2取余数,
同理,取低4位即 % 16。取一个字节的高2位,可以用右移6位实现,即除以 64。
rs = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
s = input()
ans = ""
for i in range( __________填空1___________ ):
a1 = ord(s[i])
a2 = ord(s[i + 1])
a3 = ord(s[i + 2])
b1 = a1 // 4
b2 = a1 % 4 * 16 + a2 // 16
b3 =__________填空2___________
b4 = a3 % 64
ans = ans + rs[b1] + rs[b2] + rs[b3] + rs[b4]
if len( s ) % 3 == 1:
a1 = ord( s[-1] )
b1 = a1 // 4
b2 = __________填空3___________
ans = ans + rs[b1] + rs[b2] + '=='
if len( s ) % 3 == 2:
a1 = ord( s[-2] )
a2 = ord( s[-1] )
b1 = a1 // 4
b2 = a1 % 4 * 16 + a2 // 16
b3 = __________填空4___________
ans = ans + rs[b1] + rs[b2] + rs[b3] + '='
print( ans )
时间限制: 1000ms空间限制: 256MB
来源: 必修1教材P35