我想将base64encode(ntei)
放在"这是以 64 为基数的数字:"下的新行,有人知道一种方法吗?
import easygui as e
nte = e.enterbox(msg="Enter Number to convert", title="", default="", strip=True)
ntei = int(nte)
def base64encode(number, alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"):
"""Converts an integer to a base64 string."""
if not isinstance(number, (int, long)):
raise TypeError("Number must be an integer")
base64 = ""
sign = ""
if number < 0:
sign = "_"
number = -number
if 0 <= number <len(alphabet):
return sign + alphabet[number]
while number !=0:
number, i = divmod(number, len(alphabet))
base64 = alphabet[i] + base64
return sign + base64
def base60decode(number):
return int(number, 64)
print e.msgbox(msg=("Heres the number in base 64: " + base64encode(ntei)))
问题出在"Heres the number in base 64: " + base64encode(ntei)
上。您自己不会在那里放置换行符,因此自然不会显示换行符。换行符通过 Python 中的字符n
表示。因此,要在该字符串中添加换行符,我们必须将其更改为 "Heres the number in base 64:n" + base64encode(ntei)
.
还值得一提的是,您的base64encode函数是完全不必要的(就像在easygui.msgbox
前面使用print
一样,除非出于某种原因您想查看该函数的返回值)。您可以通过 Python 字符串的编码方法将字符串转换为 base64,如 ntei.encode('base64')
.利用这些知识,可以将整个程序重写为以下内容:
import easygui as e
nte = e.enterbox(msg='Enter number to convert', title='', default='', strip=True)
e.msgbox(msg=('Heres the number in base 64: ' + nte.encode('base64')))