2016-08-10 6 views
2

Ich habe eine Zeichenfolge sagen FhY=, die in Hexadezimal codiert wurde. Also, wennDekodiert eine Base64-Zeichenfolge in eine Dezimal-Zeichenfolge

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

Dies ist ein Hex-String, der einmal sollte 22 22 sein umgewandelt. Dieses Ergebnis wurde auf der Website https://conv.darkbyte.ru/ nachgewiesen. Ich kann jedoch nicht scheinen, eine ordnungsgemäße Konvertierung von Base64 zu Dezimaldarstellung zu tun. Einige der Herausforderungen, mit denen ich konfrontiert bin, sind

  1. Erwartung der Dezimalstelle ein Int. Ich möchte nur Basis 10
  2. Falsche Werte. Ich habe die folgenden Konvertierungen base64 > base16 (Convert a base64 encoded string to binary), base64 > binary > decimal (Convert hex string to int in Python) versucht, die beide fehlgeschlagen sind.

Bitte assistieren.

+0

Gibt es einen Grund, warum Sie nicht verwenden 'struct'? –

+0

Ich habe es mir nicht angesehen. Lass mich das jetzt tun – Magondu

+0

@ IgnacioVazquez-Abrams wahrscheinlich, weil er ein Beispiel braucht: P 'struct.unpack ('H', '\ x16 \ x16')' vielleicht? –

Antwort

2

Sie müssen jedes Byte aus der dekodierten Zeichenfolge in seinen Dezimalwert konvertieren. So sollte das es lösen:

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

Ergebnisse in 22 22

+0

Ehrfürchtig. Danke – Magondu

+0

Danke, sieht gut aus. Ist diese Funktion reversibel? Wie könnte ich den resultierenden Basis-10-Text zurück zur Base-64-Zeichenfolge zuordnen? – Leonid

+1

@Leonid können Sie die Funktion umkehren, indem Sie '' '' .join (map (Lambda x: chr (int (x)), '22 22 '.split())). Encode (' base64 ') '' verwenden ' – Marco

Verwandte Themen