Я хочу преобразовать данный гекс в base64 (в python без использования каких-либо библиотек ).Как я узнал из других ответов в стеке, мы можем сгруппировать 3 шестнадцатеричных символа (12 бит, т.е. 4 бита каждый), чтобы получить 2 значения base64 (12 бит, т.е. 6 бит каждый).А также мы можем сгруппировать 6 шестнадцатеричных (24 бита) в 4 значения base64 (24 бита).
Стандартная процедура состоит в том, чтобы сложить все двоичные биты шестнадцатеричных кодов вместе и начать группировку слева в пакеты по 6.
Мой вопрос касается ситуации, для которой нам нужно заполнение: (Предполагая, что мыпреобразование 3 шестнадцатеричных в 2 base64) Возникнет ситуация, когда нам останется только 2 или 1 шестнадцатеричное значение для преобразования.Возьмите приведенный ниже пример:
от 'a1' до base64
10100001 (двоичный файл из a1)
101000 01 (0000) //создание групп по 6 и добавление дополнительных 0 в случае необходимости
Это дает "oQ" ответ, который находится в каком-то месте (oQ ==) и что-то другое в других place (wqE =)
Q1. Какой из двух источников дает правильный ответ?Почему другой плох, будучи хорошим онлайн-декодером?
Q2. Как мы понимаем число '=' здесь?(Мы могли бы просто добавить достаточное количество нулей в любом месте, где это необходимо, как в примере выше, и, таким образом, завершив ответ здесь просто oQ, а не oQ ==, предполагая, что oQ == является правильным)
Моя концепция таковачто: если гекс имеет длину 2 (а не 3), мы дополняем его одним = (следовательно, соответствует ответу wqE = в вышеприведенном случае), в противном случае, если гекс имеет длину 1 (а не 3), мы дополняемdouble = 's .
В то же время я смущен тем, что, если 3 гекса преобразуется в 2 base64, нам никогда не понадобятся два ='.
'a' в base64
1010 (двоичное из a)
Q3. Как преобразовать шестнадцатеричный 'a' в base64,