2016-12-01 111 views
1

你有什么想法如何在Python中用base64编码和解码浮点数。 我试图使用Python,base64,float

response='64.000000' 
base64.b64decode(response) 

预期输出是'AAAAAAAALkA='但我不明白的浮点数任何输出。

谢谢。

+0

你确定你有正确的预期的输出?当我将你的输出转换为浮点数时,我得到15.0 – Duncan

回答

1

Base64编码仅针对字节字符串定义,因此您必须使用struct.pack将您的编号转换为一个字节序列,然后使用base64对其进行编码。你给的例子看起来像一个base64编码的小尾数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,)