0

我正在尝试编写一个decode base62函数,但 python 给了我错误:

TypeError: 'int' object is not iterable

此代码在烧瓶之外完美运行。但它在烧瓶中不起作用。

代码如下:编辑:

BASE_ALPH = tuple("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
BASE_DICT = dict((c, v) for v, c in enumerate(BASE_ALPH))
BASE_LEN = len(BASE_ALPH)

def base62_decode(string):
    tnum = 0
    for char in str(string):
        tnum = tnum * BASE_LEN + BASE_DICT[char]
    return tnum


def base62_encode(num):
    if not num:
        return BASE_ALPH[0]
    if num<0:
        return False
    num = int(num)
    encoding = ""
    while num:
        num, rem = divmod(num, BASE_LEN)
        encoding = BASE_ALPH[rem] + encoding
    return encoding

这段代码在烧瓶之外工作得很好,但是当我从我的 Flask 应用程序调用它时给我一个错误。

4

1 回答 1

0

尝试强制转换为字符串,看看它是否能让你运行没有错误,然后检查你的解码输出 - 我认为在某些时候你有一个字符串代表一个数字,该数字正在由 python 内部转换,这就是错误出现的地方从:

def base62_decode(s):
    tnum = 0
    for char in str(s):
        tnum = tnum * BASE_LEN + BASE_DICT[char]
    return tnum

请注意,此代码假定 python 2;python 3 在遍历字符串时表现不同。

于 2014-04-12T20:50:37.023 回答