首页 > 解决方案 > 使用列表将二进制数转换为十进制数

问题描述

我已经多次尝试过这段代码。但我总是得到 45 的输出,这是错误的。

a = [1, 0, 1, 1]
value = 0
a.reverse()
print(a)             #reversed list
for i in a:
    if i==1:
        for x in range(0,len(a)):
            value += pow(2,x)
    else:
        continue
print("decimal value of binary number is:",value)

标签: pythonpython-3.xlist

解决方案


您应该研究按位运算。这将使这更有效,并且是处理位时的最佳实践。还有更多 Pythonic 方法可以实现这一点(int(x, 2)例如使用)。使用按位运算,它看起来像这样:

for i in a:
    value |= i
    value <<= 1
value >>= 1

推荐阅读