Я бы предложил метод «кодировать целое как двоичную строку», а затем метод base64 «Кодировать это», который вы предлагаете, и я бы сделал это, используя структуру:
>>> import struct, base64
>>> base64.b64encode(struct.pack('l', 47))
'LwAAAA=='
>>> struct.unpack('l', base64.b64decode(_))
(47,)
Изменить еще раз:
Чтобы убрать лишние 0 для чисел, которые слишком малы, чтобы требовать полной 32-битной точности, попробуйте это:
def pad(str, l=4):
while len(str) < l:
str = '\x00' + str
return str
>>> base64.b64encode(struct.pack('!l', 47).replace('\x00', ''))
'Lw=='
>>> struct.unpack('!l', pad(base64.b64decode('Lw==')))
(47,)