новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Декодирование строки из base64. Или B64.decode( );

  • Добавить свою публикацию
  • для этого требуется регистрация

Платформа 8.3

 

Вижу на форумах задается вопрос, о том как прочитать строку, закодированную в base64. Т.е. привести её в человеко понятный вид из набора символов. Даются некоторые ответы, листинги функций переведенных из pascal, си.

Рассмотрим как можно попытаться сделать это просто и коротко.

1. Постановка задачи; 2. Попытка решения: листинг; 3.Ссылки

 

1. Постановка задачи

Дано: строка равная например "c21vbGVuY2h1a0BwcmVtaWVyLWVsZWN0cmljLmNvbQ==",

  полученная парсером откуда либо, из интернет.

Найти: строку результат: "sample@google.com"

 

2. Листинг предлагаемого решения

 &НаСервереБезКонтекста			
Функция B64Decode(Encoded, КодировкаТекста=Неопределено)
    
	ДвДанные = Base64Значение(Encoded);
	Если ДвДанные = Неопределено Тогда
	    Возврат Неопределено;
	КонецЕсли;
	
	Если КодировкТекста = Неопределено Тогда
		ЧтениеДвДанных = Новый ЧтениеДанных(ДвДанные);
	Иначе
		ЧтениеДвДанных = Новый ЧтениеДанных(ДвДанные, КодировкаТекста);
	КонецЕсли;

	Decoded = ЧтениеДвДанных.ПрочитатьСимволы();

	ЧтениеДвДанных.Закрыть();
	
	Возврат СокрЛП(Decoded);
    
КонецФункции
 
Входная переменная
Encoded
 к примеру содержит "c21vbGVuY2h1a0BwcmVtaWVyLWVsZWN0cmljLmNvbQ=="

Входная переменная 
КодировкТекста
 может быть не заданна явно.
 
На выходе функции получаем "sample1111@google.com"


Можно прочитать символы побайтно
 	Decoded = "";
	Для НомерБайта = 1 По ДвДанные.Размер() Цикл
		Значение = ЧтениеДвДанных.ПрочитатьБайт();
		Decoded = Decoded + Символ(Значение);
	КонецЦикла;

 

3.Ссылки

https://habrahabr.ru/post/88077/               SGVsbG8gd29ybGQh или история base64
https://ru.wikipedia.org/wiki/Base64        Base64
http://base64.ru                                              Онлайн декодировщик
https://infostart.ru/public/252365/             Двоичные данные и кодировка Base64 в 1С 8.Х
https://infostart.ru/public/392252/             Кодирование строк в формат Base64 и обратно в 1С 8.Х       
 
0
Еще от автора
≡ к списку статей