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,)
你知道如何在 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,)