2016-12-01 3 views
1

Вы знаете, как кодировать и декодировать число с плавающей запятой base64 в Python. Я пытаюсь использоватьPython, base64, float

response='64.000000' 
base64.b64decode(response) 

ожидаемый выход на 'AAAAAAAALkA=', но я не получаю никакого вывода для чисел с плавающей точкой.

спасибо.

+0

Вы уверены, что у вас есть право ожидать выход? Когда я конвертирую ваш вывод в float, я получаю 15.0 – Duncan

ответ

1

Кодирование 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,)