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

如何在Python中实现bit-sequence功能:从字节数组提取比特序列转整数

Python 实现 bit-sequence 等效功能

下面是一个和npm包bit-sequence功能一致的Python函数,能够从bytes对象中按指定的起始比特索引提取指定长度的比特序列,并转换为整数:

def extract_bit_sequence(byte_data: bytes, start: int, length: int) -> int:
    total_bits = len(byte_data) * 8
    # 校验参数合法性
    if start < 0 or length < 1 or start + length > total_bits:
        raise ValueError("起始索引或长度超出数据比特范围")
    
    result = 0
    current_bit = start
    for _ in range(length):
        byte_index = current_bit // 8
        # 比特在字节内按高位到低位计数(比如字节0b10100110的索引0对应最高位1)
        bit_position = 7 - (current_bit % 8)
        # 提取单个比特
        bit = (byte_data[byte_index] >> bit_position) & 1
        # 将比特添加到结果的最低位
        result = (result << 1) | bit
        current_bit += 1
    return result

参数说明

  • byte_data: 输入的bytes类型数据,作为比特提取的源
  • start: 起始比特索引(从0开始计数,第一个字节的最高位为索引0)
  • length: 需要提取的比特序列长度

示例用法

# 测试数据:对应二进制 10100110 00111001
test_data = b'\xa6\x39'
# 从比特索引2开始,提取5个比特:序列为 10011,对应十进制19
print(extract_bit_sequence(test_data, 2, 5))  # 输出:19

这个函数的逻辑和bit-sequence保持一致:按从左到右的比特顺序(高位到低位)提取,将连续的比特序列拼接后转换为十进制整数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:50:40