2015-02-08 100 views
0

我有代码将ASCII转换为Base 64,输入“Cat”给出输出 Base 64是Q Base 64是2 Base 64是F 基地64是0在一行中打印循环输出Python 3

我如何使输出打印在一条线上,因此,“猫”会给“基地64是Q2F0”?

b64_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/" 
number = 0 
numchar = 0 
code = 0 

user_input = input("Input") 

for char in user_input: 
    numchar = numchar + 1 
    if numchar == 1: 
     number = ord(char) 
    elif numchar > 1: 
     number = ord(char) + (number << 8) 

    if numchar == 3: 
     i=3 
     for i in (3,2,1,0): 
      code = number >> (6 * i) 

#print(int(code)) 
      print("Yout base64 is "+ b64_table[int(code)]) 

      number = number - (code << (6 * i)) 
+0

迭代,然后输出在结束最后一个字符串中你可以_append_结果的作品为一个字符串。 – nbro 2015-02-08 00:25:13

+0

我真的不明白你为什么不使用base64.encode。 – bconstanzo 2015-02-08 00:31:50

+1

@bconstanzo:我真的不明白为什么人们无法尝试学习base64如何学习编码。 – 2015-02-08 00:32:18

回答

1

收集在一个列表中的base64字符,然后再加入他们循环完成后,打印您的介绍只有一次:

result = [] 
for i in (3,2,1,0): 
    code = number >> (6 * i) 
    result.append(b64_table[int(code)])) 
    number = number - (code << (6 * i)) 

result = ''.join(result) 
print("Your base64 is", result) 

这是更有效的方法;替代较慢的方法是使用字符串连接,将您的base64字符的字符串result

result = '' 
for i in (3,2,1,0): 
    code = number >> (6 * i) 
    result += b64_table[int(code)]) 
    number = number - (code << (6 * i)) 

print("Your base64 is", result)