Две функции, которые вам не хватает, предназначены для перехода от последовательности байтов к числу и обратно:
def bytes2num(b):
return b[0] + 256 * bytes2num(b[1:]) if b else 0
def num2bytes(n):
return bytes([n % 256]) + num2bytes(n // 256) if n else b''
Если вы хотите работать со строками, вы можете определить функции:
def str2num(s):
return bytes2num(s.encode('utf-8'))
def num2str(n):
return num2bytes(n).decode('utf-8')
Вы должны сделать эти реализации итеративными, если ваши сообщения очень длинные.
Тест:
>>> s = 'Hello, world!'
>>> str2num(s)
2645608968347327576478451524936
>>> num2str(2645608968347327576478451524936)
'Hello, world!'