Python:将二进制列表转换为整数

二进制列表是指将二进制数字(0和1)作为列表的独立元素来表示。在本文中,我们将探索多种将二进制列表转换为整数的方法。

使用字符串转换配合 int() 方法

这是最高效的方法。我们首先将二进制列表拼接成一个字符串,然后使用内置的 int() 函数并指定基数为 2,这样就可以直接将二进制表示形式转换为对应的整数值。

a = [1, 0, 1, 1]

n = int(‘‘.join(map(str, a)), 2)
print(n)

输出

11

原理解析:

  • map() 函数将二进制列表 ‘a‘ 中的每个元素转换为字符串。
  • INLINECODE05d39149INLINECODEf63ab41c 方法将这些列表元素组合成一个单一的字符串(例如 "1011")。
  • int() 函数将这个字符串解释为二进制数(基数 2)并将其转换为整数。

让我们继续探索更多方法,看看我们还能如何将二进制列表转换为整数。

目录

  • 使用位运算
  • 使用数学方法
  • 使用 For 循环

使用位运算

位运算 是另一种将二进制列表转换为整数的高效方式。这种方法会迭代处理二进制列表,通过移位和相加来计算整数值。

a = [1, 0, 1, 1]

n = 0
for bit in a:
    n = (n << 1) | bit
print(n)

输出

11

原理解析:

  • 我们将 number 初始化为 0。
  • 对于列表中的每一个二进制位,我们使用左移运算符(INLINECODEf6985cd9)将 INLINECODEd957053f 的位向左移动一位,然后使用位或运算符(|)加上当前的位。
  • 这种方法模拟了我们手动计算二进制数的十进制值的过程。

使用数学方法

这种方法涉及使用 2 的幂来计算二进制列表的整数值。虽然它的效率略低于前面的方法,但对于理解二进制转整数的转换过程仍然非常有效。

a = [1, 0, 1, 1]

n = sum(bit * (2 ** i) for i, bit in enumerate(reversed(a)))
print(n)

输出

11

原理解析:

  • reversed() 函数确保我们从最低有效位(最右边)到最高有效位(最左边)处理二进制列表。
  • 使用 enumerate(),我们计算每一位的位置值。
  • sum() 函数将这些位置值相加以生成最终的整数。

使用 For 循环

这种方法通过遍历二进制列表并利用 2 的幂来手动计算整数值。

a = [1, 0, 1, 1]
n = 0

for i in range(len(a)):
    n += a[-(i + 1)] * (2 ** i)
print(n)

输出

11

原理解析:

  • 我们将 number 初始化为 0。
  • 对于每一个索引,我们使用负索引以相反的顺序访问相应的位。
  • 将该位乘以其位置值(2 的幂),然后将结果加到 number 上。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/45490.html
点赞
0.00 平均评分 (0% 分数) - 0