как в 1с77 конвертировать файл в base64 #737084


#0 by vi0
Коллеги, подскажите, как в 1с77 конвертировать файл в base64
#1 by Torquader
Или ручками через КодСимв и Симв или изучать AdoDb, чтобы понять, что оно умеет. P.S. пишется студентом в рамках задания на одно занятие.
#2 by Провинциальный 1сник
Без "внешних костылей" не обойтись, не умеет 1с работать с байтами.. ни семерка, ни восьмерка.
#3 by ДенисЧ
КодСимв не спасёт отца русской?
#4 by Torquader
Стандартный объект Scripting.TextStream умеет. И вызвать его можно как из семёрки, так и из восьмёрки, только есть проблема с символами с нулевым кодом, но она решаема.
#5 by Провинциальный 1сник
А вы уверены, что получится загрузить бинарник через объект Текст, чтобы дальше разбирать его посимвольно?
#6 by Провинциальный 1сник
Это и есть костыли. В восьмерке сделали объект ДвоичныеДанные, но по непонятным причинам отказались реализовать возможность собственно работы с этими данными, аналогично со строками (получение буфера по размеру и смещению, чтение-запись байтов).. Наверное, чтобы вирусы не писали на 1с.)
#7 by Jaap Vduul
Если неохота заморачиваться с написанием своей функции, то самый простой способ - это через DOMDocument создать типизированный (bin.base64) xml и записать в него содержимое файла через adodb.stream, а поскольку 7,7 байтовый массив не может переваривать, то обернуть это всё безобразие в scriptControl.
#8 by Torquader
Двоичные данные - это поле BLOB в SQL, но в SQL-сервере эти данные можно только получать и записывать - поэтому, никто не заботился о том, чтобы с ним можно было работать.
#9 by Провинциальный 1сник
Если рассуждать так - то 1с вообще не нужна.. есть же sql-сервер, вот и пусть пользователи запросы в консоли колбасят..)
#10 by Torquader
Я не говорю, что 1С не нужна - я просто объяснил, почему появился объект "ДвоичныеДанные". На самом деле, не хватает объекта "НаборБайтов", чтобы с ним работать.
#11 by vi0
Почему результат кодирования разными кодировщиками может быть разный, а раскодирование одинаковое, даже если закодированные данные передать в другой раскодировщик? Например вот два кодировшика. Результат кодирования разный. Кодируемый текст: Если в процессе просмотра выбирались несколько страниц, то с помощью команд "Переход вперед" и "Переход назад" можно вернуться к просмотренным страницам. Для быстрого перехода к нужной странице следует использовать кнопки, располагающиеся справка от указанных кнопок. При щелчке мыщью на эту кнопку открывается список названий страниц, при выборе нужной сразу выполняется показ этой страницы. Если переходов (учитываются переходы именно того направления, которые соответствуют кнопке перехода) было более 9, то в списке показываются только ближайшие девять страниц, а в конце списка добавляется строка, содержащая текст "История". Полный список посещенных страниц открывается при выборе этой строки списка.
#12 by Torquader
Не забываем, что кодировка текста может быть как однобайтовая, так и двухбайтовая или, как положено в интернете - Utf-8, а Base64 получается после преобразования байтов в строку. Поэтому, если вы видите одно и тоже как текст, то это не означает, что это будет одно и то же для компьютера. P.S. это, кстати, одна из проблем проверки электронной подписи, когда помимо записи текста нужно указывать ещё и кодировку, в которой он записан.
#13 by vi0
кажется, что тут в другом дело если взять кодировщики из то коротку строку (например слово "Если") они кодируют одинаково, а длинную, как я там привел - по разному
#14 by Torquader
Не забываем, ещё, про переводы строки (мягкие 0Dh 0Dh 0Ah и обычные 0Dh 0Ah).
#15 by Torquader
В частности, именно переводы строки они транслируют по-разному.
#16 by vi0
точно, проверил - разница из за переводов строки
#17 by Torquader
Да я уже до тебя проверил, так что знаю.
#18 by FN
У меня где-тое есть модифкация с поддержкой кодировки файлов этой методой. Могу поискать.
#19 by vi0
быстро это работает?
#20 by FN
терпимо. Вот нарыл: Тут используется 1с++ для сжатия в зип исходных данных, но можно и без него //======================================================================
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С