在Python 3中转换为不同的位置表示法

时间:2013-03-15 19:12:46

标签: python numbers

我正在尝试编写一个函数,允许我将数字从某个位置符号转换为另一个选择,从二进制一直到* 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'。

错误在哪里?

1 个答案:

答案 0 :(得分:1)

您为每个数字执行整个循环

    for exp in range(0, len(number)):
        number_dec += factor * base1 **exp

如果您没有 推出自己的,您可以使用内置设施:

In [2]: int('4d2', 16)
Out[2]: 1234