Python、base64、浮点数

Python, base64, float

你知道如何在 Python 中使用 base64 编码和解码浮点数吗? 我正在尝试使用

response='64.000000'
base64.b64decode(response)

预期输出是 'AAAAAAAALkA=' 但我没有得到任何浮点数输出。

谢谢。

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