3

I have a string say FhY= which has been encoded to hex. So when run

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

This is a hex string that once converted should be 22 22. This result has been proven on the site https://conv.darkbyte.ru/. However, I cannot seem to do a proper conversion from base64 to decimal representation. Some of the challenges I am facing are

  1. Expectation of decimal being an int. I just want base 10
  2. Incorrect values. I have tried the following conversions base64 > base16(Convert a base64 encoded string to binary), base64 > binary > decimal(Convert hex string to int in Python) both of which have failed.

Please assist.

Marco
  • 827
  • 6
  • 18
Magondu
  • 197
  • 5
  • 20

1 Answers1

3

You need to convert each byte from the decoded string to its decimal value. So this should solve it:

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

Results in 22 22

Marco
  • 827
  • 6
  • 18
  • Thanks, looks good. Is this function reversible? How could I map the resulting base-10 text back to the base-64 string? – Leonid Jun 20 '17 at 16:54
  • 2
    @Leonid you can reverse the function by using ```''.join(map(lambda x: chr(int(x)), '22 22'.split())).encode('base64')``` – Marco Jun 20 '17 at 17:13