2016-08-10 1 views
2

У меня есть строка FhY=, которая была закодирована в hex. Поэтому при запускеДекодировать строку base64 до десятичной строки

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

Это шестнадцатеричная строка, которая после преобразования должны быть 22 22. Этот результат был доказан на сайте https://conv.darkbyte.ru/. Однако я не могу сделать правильное преобразование из base64 в десятичное представление. Некоторые из проблем, с которыми я сталкиваюсь, -

  1. Ожидание десятичного числа в виде int. Я просто хочу базу 10
  2. Неверные значения. Я пробовал следующие преобразования base64 > base16 (Convert a base64 encoded string to binary), base64 > binary > decimal (Convert hex string to int in Python), оба из которых потерпели неудачу.

Пожалуйста, помогите.

+0

Есть причина, почему вы не используете 'struct'? –

+0

Я не смотрел на это. Позвольте мне сделать это сейчас – Magondu

+0

@ IgnacioVazquez-Abrams, вероятно, потому, что ему нужен пример: P 'struct.unpack ('H', '\ x16 \ x16')' может быть? –

ответ

2

Вам необходимо преобразовать каждый байт из декодированной строки в десятичное значение. Таким образом, это должно решить:

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

Результаты в 22 22

+0

Удивительный. Спасибо – Magondu

+0

Спасибо, хорошо выглядит. Является ли эта функция обратимой? Как я могу сопоставить полученный текст base-10 с базой-64? – Leonid

+1

@Leonid вы можете отменить функцию с помощью '' ''' .join (map (lambda x: chr (int (x)), '22 22'.split())). Encode ('base64')' ' ' – Marco

 Смежные вопросы

  • Нет связанных вопросов^_^