使用字符串将二进制数转换为十进制

时间:2020-01-15 18:16:34

标签: python python-3.x function

我试图编写一个简单的函数,该函数的输入为字符串格式的二进制数,并将二进制转换为十进制。但是在输出中,我总是得到错误的信息:不管输入是什么,第3行中的“ res”值(“ 1010”,“ 10010111010”等)。另外,我尝试调试代码,并且该功能甚至没有启动循环,就好像它不在那里一样。。。所以,我只是看不到我的错误

def bin_to_dec(bin):

    bin = bin[::-1]
    res = 0

    for i in range(len(bin)):
        if bin[i] == 0:
            res += 2**i

    return res

3 个答案:

答案 0 :(得分:2)

您正在将字符串"0"与数字0进行比较,它们通常是不相等的。

因此,与您所说的相反,循环实际上是循环的;但是if语句永远不会正确。

当然,您也应该在数字为1时添加,而不是在0时添加。

def bin_to_dec(bin):
    bin = bin[::-1]
    res = 0
    for i in range(len(bin)):
        if int(bin[i]) == 1:
            res += 2**i
    return res

请注意添加了int()

答案 1 :(得分:1)

if bin[i] == '1'

这将解决问题。 bin[i]是一个字符,您正在将其与一个始终会导致错误的数字进行比较。

答案 2 :(得分:0)

您可以只使用内置的int函数:

def binaryToDecimal(n): 
    return int(n,2)