любой алгоритм декодирования base64 в BASIC

Я программирую небольшой микроконтроллер на Бейсике. По сути, он получил некоторые данные в кодировке BASE64, и мне нужно декодировать их на моем конце с помощью BASIC. Мне было интересно, есть ли способ сделать это?


person JPro    schedule 24.09.2010    source источник
comment
какой основной? есть ли у вас возможность растровой маски языка?   -  person Eineki    schedule 24.09.2010


Ответы (1)


Я не знаю основ, но вы можете начать с этой ссылки: http://en.wikipedia.org/wiki/Base64 с четким объяснением того, как работает кодировка.

Вам нужно декодировать сообщение в кодировке base64, поэтому вы должны настроить массив, например

dim('A','B','C','D','E',....,'8','9','+','/')

(или независимо от основного синтаксиса) с индексом 64 и прочитать 4 символа из ввода. Найдите соответствующее значение в таблице поиска и используйте его для декодирования сообщения.

Я буду использовать термин char для обозначения символов, которые вы найдете в закодированном сообщении, и термин index для обозначения значения, которое они представляют для алгоритма декодирования.

Если ваша основная поддержка битовой маски, вы можете сделать это очень быстро. если нет, вам придется использовать умное умножение/деление.

  • умножьте первый индекс и умножьте его на 4 (модуль 255), разделите второй индекс на 16, добавьте два результата, чтобы получить первый байт

  • умножьте второй индекс на 16 (модуль 255), разделите третий индекс на 4, добавьте два результата, чтобы получить второй байт,

  • умножьте третий индекс на 16 (модуль 255), добавьте четвертый индекс, чтобы получить третий байт

повторять до конца сообщения.

Вам нужно обратить внимание на символы заполнения: если вы встретите знак =, вы знаете, что достигли конца закодированных байтов, и вам нужно остановить декодирование, зная, что:

  • если третий закодированный символ равен a =, вам нужно декодировать только первый байт;
  • если четвертый символ равен a = вам нужно декодировать два байта;

Других случаев нет.

Еще один совет: иногда закодированные сообщения переносятся, вам нужно игнорировать символы \n (или любую комбинацию \r\n, с которой вы можете столкнуться).

person Eineki    schedule 24.09.2010