INNER CODE UNIT · Python
convert_bits
bee-san/pyWhat · pywhat/bitcoin.py:72
def convert_bits(
data: Sequence[int], from_bits: int, to_bits: int
) -> Optional[List[int]]:
"""
Regroup data, a sequence of from_bits-bit integers, into to_bits-bit
integers. None if what is left over is not a zero padding of less than
from_bits bits (BIP 173).
"""
accumulator = 0
bits = 0
result = []
max_value = (1 << to_bits) - 1
max_accumulator = (1 << (from_bits + to_bits - 1)) - 1
for value in data:
accumulator = ((accumulator << from_bits) | value) & max_accumulator
bits += from_bits
while bits >= to_bits:
bits -= to_bits