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