2

我想base64encode(ntei)在“Heres the number in base 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)))
4

1 回答 1

0

问题出在"Heres the number in base 64: " + base64encode(ntei). 您自己并没有在其中放置换行符,因此自然不会显示换行符。换行符通过\nPython 中的字符表示。因此,要向该字符串添加换行符,我们必须将其更改为"Heres the number in base 64:\n" + base64encode(ntei).

还值得一提的是,您的 base64encode 函数是完全没有必要的(就像print在 前面使用一样easygui.msgbox,除非出于某种原因您想查看该函数的返回值)。您可以通过 Python 字符串的 encode 方法将字符串转换为 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')))
于 2012-12-04T14:36:33.803 回答