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

fun*_*err 0 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)))
Run Code Online (Sandbox Code Playgroud)

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

Ash*_*ary 5

您可以int在这里简单地使用:

>>> strs = 'test'
>>> int(strs, 36)
1372205
Run Code Online (Sandbox Code Playgroud)

或定义自己的函数:

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

  • 反演有类似的解决方案吗? (2认同)