2015-02-08 57 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)