Преобразование строки BASE64 в строку BASE16 (HEX)? - PullRequest
2 голосов
/ 04 апреля 2011

Эй, я пытаюсь написать программу для преобразования строки BASE64 в строку BASE16 (HEX).

Вот пример:

     BASE64:   Ba7+Kj3N
HEXADECIMAL:   05 ae fe 2a 3d cd
     BINARY:   00000101 10101110 11111110 00101010 00111101 11001101
    DECIMAL:   5 174 254 42 61 205

Какую логику конвертировать из BASE64 в HEXIDECIMAL?
Почему десятичное представление разделено?
Как получилось, что двоичное представление разбито на 6 секций?

Просто хочу математику, код, который я могу обработать, просто этот процесс сбивает меня с толку. Спасибо:)

1 Ответ

4 голосов
/ 04 апреля 2011

Считывает base64 4 символа за раз, поскольку 4 символа base64 становятся 3 байтами:

'Ba7+', 'Kj3N'

Расшифровывают каждый символ base64.Я только что посмотрел на Википедия :

[1, 26, 59, 62], [10, 35, 55, 13]

Сдвиньте числа в каждой группе влево на 18, 12, 6 и 0 соответственно:

>>> def pack(a, b, c, d): return hex((a << 18) + (b << 12) + (c << 6) + d)
>>> pack(1, 26, 59, 62)
'0x5aefe'
>>> pack(10, 35, 55, 13)
'0x2a3dcd'

Затем, если вы хотите конвертировать в гекс самостоятельно, сдвиньте их вправо на 4, 8, ... 24, 28, чтобы отделить каждый клочок и преобразовать в цифру от 0 до f.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...