Конвертор строк в base64 формат

Программирование - Инструментарий

Кодировщик строки в Base64 формат и декодировщик из Base64 в строку.

Обработка демонстрирует пример преобразования строк в строки формата Base64 и обратно тремя различными методами.

Через создание временного файла в файловой системе: не рекомендуется для преобразования большого кол-ва строк, т.к. будете нагружать дисковую подсистему. (После написания обработки выяснилось, что подобный вариант уже есть на ИС: //1c-soft.it-terminal.ru/public/392252)

Другие 2 метода работают в оперативной памяти:

Свой велосипед: суть такова, что берем строку, преобразуем каждый символ (1с оперирует символами Юникода) в кодировку UTF-8 через манипуляции с байтами и битами (https://ru.wikipedia.org/wiki/Юникод#UTF-8), полученное значение пишем в поток, на его основе создаем двоичные данные, которые преобразуем в строку base64 встроенной функцией 1с. (Возможно, подобный механизм присутствует в //1c-soft.it-terminal.ru/public/300800)

И после создания своего движка по преобразованию нашел статью //1c-soft.it-terminal.ru/public/617021, на основе которой представлен 3-й (самый быстрый) метод конвертации: работает это просто - через Чтение/Запись данных и промежуточный поток в памяти.

Во всех трех методах поддерживается полная таблица символов Unicode.

Протестировано на платформе 8.3.10.

Скачать файлы

Наименование Файл Версия Размер
Конвертор строк в base64 формат:
.epf 9,83Kb
16.10.17
1
.epf 1.0 9,83Kb 1 Скачать

См. также

Лучшие комментарии
2. Armando Armando (Armando) 1382 16.10.17 23:36 Сейчас в теме
А методы глобального контекста ПолучитьДвоичныеДанныеИзСтроки и ПолучитьСтрокуИзДвоичныхДанных уже не канают?
kirillkr; SerVer1C; +2 Ответить
Остальные комментарии
1. Кирилл kirillkr (kirillkr) 27 16.10.17 15:37 Сейчас в теме
Функция СтрокаВBase64(СтрокаДанных) Экспорт

	Поток = Новый ПотокВПамяти;
	Запись = Новый ЗаписьДанных(Поток, КодировкаТекста.UTF8);
	Запись.ЗаписатьСимволы(СтрокаДанных);
	Запись.Закрыть();
	ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
	СтрокаФорматBase64 = Base64Строка(ДвоичныеДанные);
	СтрокаФорматBase64 = СтрЗаменить(СтрокаФорматBase64, Символы.ВК, ""); // убираем ВК
	СтрокаФорматBase64 = СтрЗаменить(СтрокаФорматBase64, Символы.ПС, ""); // убираем ПС

	Возврат СтрокаФорматBase64;

КонецФункции

Функция СтрокаИзBase64(СтрокаФорматBase64) Экспорт

	ДвоичныеДанные = Base64Значение(СтрокаФорматBase64);
	Поток = Новый ПотокВПамяти;
	Запись = Новый ЗаписьДанных(Поток, КодировкаТекста.UTF8);
	Запись.Записать(ДвоичныеДанные);
	Запись.Закрыть();
	Данные = Новый ЧтениеДанных(Поток, КодировкаТекста.UTF8);
	СтрокаДанных = "";
	Пока Не Данные.ЧтениеЗавершено Цикл
		СтрокаДанных = СтрокаДанных + Данные.ПрочитатьСтроку();
	КонецЦикла;
	Данные.Закрыть();
	Поток.Закрыть();

	Возврат СтрокаДанных;

КонецФункции

Показать


Данный код работает с версии 8.3.9 или 8.3.10, т.е. там где появились потоки и работа с ними.
2. Armando Armando (Armando) 1382 16.10.17 23:36 Сейчас в теме
А методы глобального контекста ПолучитьДвоичныеДанныеИзСтроки и ПолучитьСтрокуИзДвоичныхДанных уже не канают?
kirillkr; SerVer1C; +2 Ответить
Оставьте свое сообщение