我正在尝试编写一个函数,允许我将数字从某个位置符号转换为另一个选择,从二进制一直到* hexa * trigesimal基数。为此,我首先需要能够将我的初始数字(以字符串形式给出)转换为十进制数,以便进一步转换。
但是,我的功能似乎有误。
我有什么:
def decimal(number, base1):
number_dec = 0
val = '0123456789abcdefghijklmnopqrstuvwxyz'
if base1 != 10:
for digit in number[::-1]:
factor = val.find(digit)
for exp in range(0, len(number)):
number_dec += factor * base1 **exp
else:
number_dec = number
return number_dec
如果我输入,例如:
decimal('4d2', 16)
该函数返回'5187'而不是正确的'1234'。
错误在哪里?
答案 0 :(得分:1)
您为每个数字执行整个循环:
for exp in range(0, len(number)):
number_dec += factor * base1 **exp
如果您没有 推出自己的,您可以使用内置设施:
In [2]: int('4d2', 16)
Out[2]: 1234