我试图创建一个简单的方法将字符串转换为基数为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
。
答案 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