如何在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
相关产品推荐
相关产品推荐

