You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中获取二进制文件的所有比特并存入列表

将二进制文件的所有比特存入Python列表

嘿,你说得完全对——每个字节确实包含8个比特!Python本身确实没有直接读取比特的文件操作模式,但我们可以很轻松地把读取到的字节拆分成对应的比特序列,实现你想要的需求。

下面给你两种实用的实现方法,你可以根据自己的场景选择:

方法1:位运算拆分(高效适合大文件)

位运算的方式直接操作二进制数值,效率更高,处理大体积的二进制文件时优势明显:

with open("binaryfile.bin", "rb") as f:
    bytes_read = f.read()
    all_bits = []
    for byte in bytes_read:
        # 从高位到低位依次取出每个比特(保证比特顺序和文件一致)
        for bit_pos in reversed(range(8)):
            # 右移目标比特到最低位,再用&1取出该比特的值(0或1)
            bit = (byte >> bit_pos) & 1
            all_bits.append(bit)

代码解释:

  • reversed(range(8)) 是为了从字节的最高位(第7位)到最低位(第0位)依次取比特,这样得到的比特顺序和文件中实际存储的顺序完全一致。
  • 位运算>> bit_pos 将目标比特移动到最低位,&1 则会保留最低位的数值(0或1),从而取出对应位置的比特。

方法2:字符串格式化拆分(简洁易读)

如果处理的文件不大,用字符串格式化的方式会更直观,代码也更简洁:

with open("binaryfile.bin", "rb") as f:
    bytes_read = f.read()
    all_bits = []
    for byte in bytes_read:
        # 将字节格式化为8位二进制字符串,不足8位时自动在前面补0
        bit_str = f"{byte:08b}"
        # 把字符串的每个字符转成整数,批量添加到列表中
        all_bits.extend([int(bit_char) for bit_char in bit_str])

代码解释:

  • f"{byte:08b}" 是Python的格式化语法,08b 表示把数值转换为8位的二进制字符串,比如字节值为3时,会生成"00000011"。
  • 遍历二进制字符串的每个字符,转成整数0或1,再用extend把这些整数批量添加到总列表里。

两种方法最终都会得到一个包含文件所有比特的列表all_bits,每个元素都是0或1,完全满足你的需求~

内容的提问来源于stack exchange,提问作者j v

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:55:37