ALPHABET = "234567abcdefghijklmnopqrstuvwxyz" DECODING_MAP = {v: k for k, v in enumerate(ALPHABET)} def encode_int(data: int, length: int) -> str: encoded = "" for i in range(0, length, 5): c = data & 0b11111 data >>= 5 encoded += ALPHABET[c] return "".join(reversed(encoded)) def decode_int(data: str) -> int: decoded = 0 for letter in data: if letter not in DECODING_MAP: raise ValueError("Non-base32-sortable digit found") decoded <<= 5 decoded += DECODING_MAP[letter] return decoded