Кодирование Base64 определено только для байтовых строк, поэтому вам необходимо преобразовать свой номер в последовательность байтов с использованием struct.pack
, а затем base64 закодировать это. Пример, который вы даете, выглядит как закодированный base64 double-endian double. Так (для Python 2):
>>> import struct
>>> struct.pack('<d', 64.0).encode('base64')
'AAAAAAAAUEA=\n'
Для обратного направления вы base64 декодирования, а затем распаковать его:
>>> struct.unpack('<d', 'AAAAAAAALkA='.decode('base64'))
(15.0,)
Так это выглядит, как ваш пример 15,0, а не 64,0.
Для Python 3 вам необходимо также использовать модуль base64
:
>>> import struct
>>> import base64
>>> base64.encodebytes(struct.pack('<d', 64.0))
b'AAAAAAAAUEA=\n'
>>> struct.unpack('<d', base64.decodebytes(b'AAAAAAAALkA='))
(15.0,)
Вы уверены, что у вас есть право ожидать выход? Когда я конвертирую ваш вывод в float, я получаю 15.0 – Duncan