在Python 3中转换为不同的位置表示法
我正在尝试写一个函数,目的是把一个数字从一种进制转换成另一种进制,比如从二进制转换到十六进制,甚至更高的进制。为了做到这一点,我首先需要把我输入的数字(以字符串形式给出)转换成十进制,这样后面的转换会更简单。
不过,我的函数似乎有个错误。
我现在的代码是:
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'。
错误出在哪里呢?
1 个回答
1
你需要对每一个数字都执行整个循环:
for exp in range(0, len(number)):
number_dec += factor * base1 **exp
如果你不需要自己去实现,可以直接使用内置的功能:
In [2]: int('4d2', 16)
Out[2]: 1234