【问题标题】:Python, base64, floatPython,base64,浮点数
【发布时间】:2016-12-01 15:30:46
【问题描述】:

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

response='64.000000'
base64.b64decode(response)

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

谢谢。

【问题讨论】:

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

标签: python-3.x base64


【解决方案1】:

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,)

【讨论】:

    猜你喜欢
    • 2011-02-28
    • 2023-04-06
    • 1970-01-01
    • 2017-07-26
    • 2020-07-26
    • 1970-01-01
    • 2013-01-10
    • 2021-01-16
    • 1970-01-01
    相关资源
    最近更新 更多