Base 64 не использует символы <
или >
, поэтому я предполагаю, что вы используете веб-безопасный вариант base64, означающий, что вам не нужно беспокоиться о сущностях HTML или комментариях внутри содержимого.
Если вы действительно уверены, что содержание имеет эту форму, выполните следующие действия:
- Сканирование справа ищет
'<'
. Это будет начало закрывающего тега.
- Сканирование влево от этой позиции в поисках
'>'
. Это будет конец начального тега.
Содержимое базы 64 находится между этими двумя позициями, исключая.
Вы можете настроить ваш второй массив, используя
((end - start + 3) / 4) * 3
в качестве верхней границы длины декодированного содержимого, а затем кодировать в нее b64. Это работает, потому что каждые 4 цифры base64 кодируют 3 байта.
Если вы хотите по-настоящему вычурно, так как вы знаете, что первые несколько байтов массива содержат данные тегов игнорирования, а закодированные данные меньше входных, вы можете деструктивно декодировать данные в текущем байтовом буфере.