Имя: Пароль:
1C
1C 7.7
v7: Преобразование текста в HEX
0 victuan1
 
18.05.16
09:40
Поделитесь функцией для преобразования текста в шестнадцатеричные коды его символов на языке 1С 7.7
По сути нужен аналоги функции TextToHex, имеющейся в среде VisualBasic

Вот пример этой функции в онлайне: http://crypt-online.narod.ru/crypts/text2hex
1 ДенисЧ
 
18.05.16
09:41
Не стыдно? С таким-то хвостиком?
2 Mikeware
 
18.05.16
09:42
(1) это не хвост, сказал волк и покраснел...©
3 ДенисЧ
 
18.05.16
09:43
(2) Паш, ляг.
)))))
4 victuan1
 
18.05.16
09:48
(1) ну я придумал такой вариант:
Функция Из_10_В_Любую(Знач Значение=0,Нотация=36) Экспорт
     Если Нотация<=0 Тогда Возврат("") КонецЕсли;
     Значение=Число(Значение);
     Если Значение<=0 Тогда Возврат("0") КонецЕсли;
     Значение=Цел(Значение);
     Результат="";
     Пока Значение>0 Цикл
          Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%Нотация+1,1)+Результат;
          Значение=Цел(Значение/Нотация) ;
     КонецЦикла;
     Возврат Результат;
КонецФункции


Процедура Сформировать()
    Сообщить(арг);
    стр = "";
    для й = 1 по СтрДлина(арг) Цикл
        стр = стр+Из_10_В_Любую(КодСимв(Сред(арг,й,1)),16)
    КонецЦикла;
    Сообщить(стр);
КонецПроцедуры

Но может есть более изящный способ?
5 victuan1
 
18.05.16
09:58
После оптимизации получился такой результат:

Функция TextToHex(Зн)
    Рез = "";
    для й = 1 по СтрДлина(Зн) Цикл
        Значение = КодСимв(Сред(зн,й,1));
        Результат="";
        Пока Значение>0 Цикл
             Результат=Сред("0123456789ABCDEF",Значение%16+1,1)+Результат;
             Значение=Цел(Значение/16) ;
        КонецЦикла;
        Рез = Рез+Результат
    КонецЦикла;
    Возврат Рез;
КонецФункции

Получается сам себе и ответил.
Может что-то не учел? В строке не будет кириллицы.
6 Mikeware
 
18.05.16
10:00
(5) да какя разница, будет кирилица или нет. каждый байт должер преобразоваться в 2 хекса.
7 ДенисЧ
 
18.05.16
10:04
(6) Про уникод мы по старости не помним? ))
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан