def int128_to_b36(int128): """ int128: a 128 bit unsigned integer returns a base-36 string representation """ if not int128: return None assert len(int128) == 16, "should be 16 bytes (128 bits)" a, b = struct.unpack('>QQ', int128) # uuid() is big-endian pub_id = (a << 64) | b return base36encode(pub_id).lower()