Я программирую небольшой микроконтроллер на Бейсике. По сути, он получил некоторые данные в кодировке BASE64, и мне нужно декодировать их на моем конце с помощью BASIC. Мне было интересно, есть ли способ сделать это?
любой алгоритм декодирования base64 в BASIC
Ответы (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, с которой вы можете столкнуться).