1
你有什么想法如何在Python中用base64编码和解码浮点数。 我试图使用Python,base64,float
response='64.000000'
base64.b64decode(response)
预期输出是'AAAAAAAALkA='
但我不明白的浮点数任何输出。
谢谢。
你有什么想法如何在Python中用base64编码和解码浮点数。 我试图使用Python,base64,float
response='64.000000'
base64.b64decode(response)
预期输出是'AAAAAAAALkA='
但我不明白的浮点数任何输出。
谢谢。
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,)
你确定你有正确的预期的输出?当我将你的输出转换为浮点数时,我得到15.0 – Duncan