Как строку закодировать в hex-кодировке #779340


#0 by Aleksey1989
Добрый вечер. Подскажите, пжл, как можно средствами 1С закодировать строку в hex-кодировке, есть ли встроенные функции?
#1 by shuhard
кури 8.3.9
#2 by Garykom
wtf "hex-кодировке" ?
#3 by NorthWind
КодСимв каждого символа строки и потом его в 16-ричное представление - функция тут в книге знаний была, помню. Так что, видимо, все можно.
#4 by Mauser
гДЕЯ оХГДЕЖ ?
#5 by Mauser
Исходная строка-то в какой кодировке?
#6 by Aleksey1989
Исходная строка - это переменная типа "Строка" в 1С.
#7 by Mauser
Тогда с учетом того, что код будет 16-битным. Порядок байт в результате выберешь по вкусу.
#8 by Aleksey1989
Спасибо всем за советы!
#9 by NorthWind
Функцию преобразования числа в 16-ричный код можно написать и самому. Делишь число на 16 с остатком. Остаток от деления - значение от 0 до 15 - это и будет очередная цифра 16-ричного числа (только нужно будет преобразовать 10,11,12,13,14,15 в A,B,C,D,E,F соответственно). Частное от деления вновь делите на 16 и опять остаток от деления - следующая цифра, полученное частное опять на 16... и так до тех пор пока очередное частное не окажется меньше 16. Это будет последняя цифра искомого числа.
#10 by Mauser
Фигу. В данном случае надо всегда делать ровно 4 итерации деления на 16
#11 by NorthWind
это смотря какое число. Если у вас исходное число 17, то итерация будет одна. Остаток получится 1 и частное тоже 1, результат - 11h.
#12 by NorthWind
ну и да, если стоит задача "нарисовать" сколько-то байтовое представление, то результат надо выровнять нулями и пробелами до нужного вида.
#13 by Mauser
Если ты хочешь зашифровать исходную строку невосстановимо, то да.
#14 by Serginio1
ТипhexBinary    = ФабрикаXDTO.Тип(";, "hexBinary");       Сообщить(ДвоичныеДанные.ЛексическоеЗначение);
#15 by Mauser
А теперь читаем и преобразуем строку в двоичные данные. Желательно без дотнета.
#16 by Лефмихалыч
СтрокаВХексКодировке = XMLСтрока(ИсходнаяСтрока)
#17 by Serginio1
Тогда преобразуем в Base64 из неё в ДД.
#18 by Serginio1
Или ДД=XMLЗначение(Тип("ДвоичныеДанные"),ИсходнаяСтрока);
#19 by Serginio1
Вот с нетом это делается моментом, куча функций. А с чистым 1С нужно постоянно приседать.
#20 by Torquader
А нахрена чистому 1С строка в Hex-кодировке ?   For j=1 To 4 Do    u=k Mod 16;
#21 by Serginio1
Ты не поверишь, чего только не бывает. Это ты ТК спроси
#22 by Mauser
Как по вашему, насколько велик будет спрос на подобную технологию?
#23 by Zamestas
+1
#24 by Zamestas
+ Нужная отдельная секция: 1С 8 хочу странного. В которой ТС обязательно должен объяснить что, и для чего он хочет получить странного и накуя это ему надо.
#25 by Serginio1
Ты не поверишь, но сейчас в 1С куча народа использует .Net в качестве СОМ. Ответ большой.
#26 by Mauser
Даже под Linux?
#27 by Serginio1
Сначала нужно найти этих линуксоидов. Или их нет, потому что на линукс нет COM?
#28 by Torquader
Начнём с того, что большая часть торгового оборудования на Linux заводится совершенно по-другому, нежели в Windows.
#29 by NorthWind
не знают/не умеют делать в другом, вот и хотят в 1С
#30 by NorthWind
в принципе, ничего страшного в этом нет, можно и в 1С много чего делать. Но а) нужно знать алгоритмы, и б) мешает отсутствие битовой арифметики и полноценной поддержки двоички.
#31 by Zamestas
Для начала нужно понять - почему какую то информацию нельзя получить и переварить платформой.
#32 by Zamestas
Чем Вам отсутствие двоички мешает - какие дикие алгоритмы это требуют?
#33 by NorthWind
ну, пару раз был интерес считать произвольные данные из бинарника. Получить несколько значений из серединки - байтовых, двухбайтовых.
#34 by NorthWind
компорт бы уже можно было бы и присобачить штатно без компонент...
#35 by NorthWind
много чего можно было бы, если подумать
#36 by Zamestas
Пример можно в студию? Я (каюсь) - рассчитывал вхождения IP адресов хостов/подсетей в подсети с произвольной маской (и тех и других) без "двоички" без битовых масок и особых преобразований (<= >= хватило).
#37 by Serginio1
Ну на самом деле обычно к любому оборудованию идет API на C#. Сейчас с выходом .Net Core будут делать о по NetStandart, так как он кроссплатформенный.
#38 by NorthWind
что именно не понятно? Есть на диске файл, двоичный. В нем 10К разных байт от 0 до 255. Нужно по смещению, скажем, 20, определить какое 16-битовое число лежит. Как вы это в 1С сделаете?
#39 by NorthWind
файлы складываются сторонней программой, попросить ее складывать в тексте или в XML - нельзя
#40 by Zamestas
Тут согласен - проще парсер один раз отписать на .
#41 by Torquader
К иностранному оборудованию часто идёт просто JavaPos-драйвер, и больше ничего.
#42 by Torquader
ЧтениеТекста в нужной кодировке позволит это сделать - конечно - не быстро и с бубном - но можно.
#43 by Serginio1
Для Windows обязательно идут на C#. С выходом .Net Core будут делать кроссплатформенные библиотеки. Просто .Net Core в релизе меньше месяца
#44 by Zamestas
Оно если битовое и на ссылках - то диаметр бубна сильно возрастает.
#45 by NorthWind
ну так-то да. Только вообще проще всего было бы, если бы бинарка нормально обрабатывалась средствами языка. Т.е. если бы по ДвоичнымДанным можно было бы позиционироваться, получать из них куски требуемого размера, делать с ними битовые операции и преобразовывать в другие типы данных. И, кстати, это обещают сделать.
#46 by Torquader
Я видел кучу оборудования, где драйвер с примерами на Си - особенно это Windows CE касается, хотя там тоже есть Net.
#47 by Zamestas
Может Вам какую нить Библиотеку Стандартных Драйверов запилить?
#48 by Zamestas
+ Востребованный весьма функционал.
#49 by Torquader
Я расчёт Md5 писал на VbScript, где тоже с битовыми операциями не очень - делал через умножение и деление с остатком и разбивая каждый регистр на две переменных, а потом это чудо запихивал в 1С 7.7 - и работало.
#50 by Serginio1
Я писал под WinCE на .Net. Кроме того есть Interop Ты про это
#51 by Zamestas
Да.
#52 by Zamestas
+ Оно может быть ленивым - типо местного пофигуратора  - есть исходные -> шаблон (аля XML под конкретное ПО) для преобразования в конечные данные и обратно.
#53 by Serginio1
Можно и сейчас обернуть C++ библиотеки через Interop. Только у меня нет ни торгового оборудования, но Линукса.
#54 by Zamestas
Если будет возможность крутить команды драйвера ПО через какой нить аналог пофигуратора - будет все.
#55 by Zamestas
*ТО (торгового оборудования)
#56 by Torquader
Проблема была в том, что пришлось отлаживать Dll драйвера, так как в ней просто оказалась ошибка, и несколько последних символов кода, если он больше 16 - шли коту под хвост. И потом, для CE проще на Си писать - оно быстрее работает.
#57 by Ёпрст
на вот, универсальные механизмы
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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