2016-12-01 123 views
1

你有什麼想法如何在Python中用base64編碼和解碼浮點數。 我試圖使用Python,base64,float

response='64.000000' 
base64.b64decode(response) 

預期輸出是'AAAAAAAALkA='但我不明白的浮點數任何輸出。

謝謝。

+0

你確定你有正確的預期的輸出?當我將你的輸出轉換爲浮點數時,我得到15.0 – Duncan

回答

1

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