2016-08-10 101 views
2

我有一個字符串說FhY=已被編碼爲十六進制。因此,當運行解碼base64字符串到十進制字符串

>>> b6 = 'FhY=' 
>>> b6.decode('base64') 
'\x16\x16' 

是一旦轉換應該是22 22一個十六進制字符串。該結果已在網站https://conv.darkbyte.ru/上得到驗證。但是,我似乎無法做到從base64到十進制表示的正確轉換。我面臨的一些挑戰是

  1. 期望的小數是int。我只想要基數10
  2. 錯誤的值。我嘗試了以下轉換base64 > base16Convert a base64 encoded string to binary),base64 > binary > decimalConvert hex string to int in Python),兩者均失敗。

請協助。

+0

是否有一個原因:所以這應該解決的呢? –

+0

我沒有看過它。現在讓我這麼做 – Magondu

+0

@ IgnacioVazquez-Abrams可能是因爲他需要一個例子:P'struct.unpack('H','\ x16 \ x16')'也許? –

回答

2

您需要將解碼字符串中的每個字節轉換爲其十進制值。你爲什麼不使用`struct`

b6 = 'FhY=' 
' '.join([ str(ord(c)) for c in b6.decode('base64') ]) 

結果22 22

+0

太棒了。謝謝 – Magondu

+0

謝謝,看起來不錯。這個功能是否可逆?我怎樣才能將生成的base-10文本映射回base-64字符串? – Leonid

+1

@Leonid你可以使用''''.join(map(lambda x:chr(int(x)),'22 22'.split()))。encode('base64')' ' – Marco