python - 使用列表将二进制数转换为十进制数
问题描述
我已经多次尝试过这段代码。但我总是得到 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)
解决方案
您应该研究按位运算。这将使这更有效,并且是处理位时的最佳实践。还有更多 Pythonic 方法可以实现这一点(int(x, 2)
例如使用)。使用按位运算,它看起来像这样:
for i in a:
value |= i
value <<= 1
value >>= 1
推荐阅读
- node.js - 使用 JWT 策略的 NestJs 身份验证 - 添加“ignoreNotBefore”的验证选项
- java - 进度对话框没有进展 Android Studio 的问题
- java - 以这种方式使用泛型时,尝试重构并避免“参数不匹配,无法转换为 SomeClass”
- python - 为每个项目重复相同的用户输入 - python
- vba - 设置 objBAPIControl = CreateObject("SAP.Functions")
- docker - 如何知道 docker 容器中的哪些数据能够正确地将其映射为卷
- forms - TYPO3 表单扩展 - 整理者在 YAML 中创建多个条目
- ruby - 具有固定限制的并行 HTTP 请求的正确输出
- android - 将GMT转换为CET时区android
- arrays - 如何使用数组对唯一数据进行分组