在Python中将字符串转换为十进制(基数为10)

时间:2013-07-02 11:45:05

标签: python numbers converter base

我试图创建一个简单的方法将字符串转换为基数为10的整数(在Python中):

def strToNum(strData, num=0 ,numerals="0123456789abcdefghijklmnopqrstuvwxyz"):
    return ((len(strData)==0) and num) or (strToNum(strData[0:-1], num+numerals.index(strData[-1])**len(strData)))

它似乎不起作用。当我测试'test'作为它输出的字符串时:729458。当我使用一些在线工具进行转换时,我得到了:1372205

2 个答案:

答案 0 :(得分:4)

您可以在此处使用int

>>> strs = 'test'
>>> int(strs, 36)
1372205

或定义自己的功能:

def func(strs):
    numerals = "0123456789abcdefghijklmnopqrstuvwxyz"
    return sum(numerals.index(x)*36**i for i, x in enumerate(strs[::-1]))
... 
>>> func(strs)
1372205

答案 1 :(得分:-2)

试试这个:

def convert(string: str) -> int:
    for base in range(0, 36):
        try:
            if str(int(string, base)) == string:
                return int(string, base)
                break
        except ValueError:
            pass
        finally:
            pass