Python: двоичный файл для Base64

#python #binary #base64

#python #двоичный #base64

Вопрос:

Итак, у меня есть двоичное число, 001000 т.е. 8 .

Если я это сделаю base64.b64encode(001000) , я получу сообщение об ошибке.

Итак, я делаю base64.b64encode(b'001000') и получаю b'MDAxMDAw' .

Но мне нужно получить символ base64 в индексе исходного числа 001000 или 8, который в данном случае будет 'I' . Или, если число было 011100 (28), тогда соответствующий символ в таблице base64 со значением 28 будет: 'd' .

Например: вот некоторые значения в таблице b64

0 == A, 1 == B, 2 == C, 3 == D, 4 == E

Итак, что я хочу сделать: сначала преобразуйте двоичное число в десятичное (000011 == 3) . Затем возьмите это число и сравните его с таблицей base64, и вы увидите, что 3 или 000011 равно 'D' .

Кто-нибудь знает, как я мог бы это сделать?

Комментарии:

1. ты пытался 0b001000 ?

2. если вы это сделаете base64.b64encode(b'0b001000') , вы получите b'MGIwMDEwMDA='

3. или, если вы это сделаете base64.b64encode(0b001000) , вы получите сообщение об ошибке

Ответ №1:

Если я правильно понимаю, следующее должно делать то, что вы хотите:

 base64.b64encode(bytes([0b001000]))
 

Объяснение:

  • 0b001000 : 0b обозначение возвращает целое число 8
  • [0b001000] : создает массив длиной 1
  • bytes([0b001000]) : преобразует итерацию в байты
  • b64encode(bytes([0b001000])) : преобразует эти байты в кодировку base64

Комментарии:

1. это вернулось b'CA==' для меня, но то, на что я надеялся, было 'I'

2. если вы посмотрите на таблицу base64, вы увидите столбец значений и столбец символов, а поскольку значение ‘I’ равно 8, когда я это делаю 001000 , я ожидал «I», в любом случае спасибо

3. CA== это кодировка байта в base64 0001000 , верно? Откуда 'I' берется?

4. ну, 001000 в десятичной 8 системе счисления и в таблице base64 ‘I’ в base64 равно 8 в десятичной системе счисления, верно?

5. извините, если это сбивает с толку