любой алгоритм декодирования base64 в бейсике - PullRequest
0 голосов
/ 24 сентября 2010

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

1 Ответ

0 голосов
/ 24 сентября 2010

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

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

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

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

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

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

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

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

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

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

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

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

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

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

...