2016-08-10 13 views
2

文字列には、FhY=という16進数にエンコードされた文字列があります。だから、base64文字列を10進数の文字列にデコード

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

を実行したときにこれは一度変換16進文字列である22 22でなければなりません。この結果はサイトhttps://conv.darkbyte.ru/で証明されています。しかし、私はbase64から10進表現への適切な変換を行うことはできません。私が直面している課題のいくつかは、

  1. intの小数です。私はちょうどベース10が必要です
  2. 値が正しくありません。私は以下の変換を試みましたbase64 > base16Convert a base64 encoded string to binary)、base64 > binary > decimalConvert hex string to int in Python)両方とも失敗しました。

助けてください。

+0

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

結果の理由はありますが、 'struct'を使用していない理由は? –

+0

私はそれを見ていません。今度はそうしましょう – Magondu

+0

@ IgnacioVazquez-Abramsおそらく彼は例を必要としているでしょう:P 'struct.unpack( 'H'、 '\ x16 \ x16')'おそらく? –

答えて

2

デコードされた文字列から各バイトを10進値に変換する必要があります。だから、これはそれを解決する必要があります22 22

+0

素晴らしいです。おかげで – Magondu

+0

ありがとう、よく見えます。この機能は可逆的ですか?どのようにして結果のベース10のテキストをベース64の文字列に戻すことができますか? – Leonid

+1

@Leonidあなたは '' ''.join(map(lambda x:chr(int(x))、'22 22'.split()))を使って関数を逆にすることができます。 ' – Marco

関連する問題