|
v7: Преобразование текста в HEX
| ☑ |
0
victuan1
18.05.16
✎
09:40
|
Поделитесь функцией для преобразования текста в шестнадцатеричные коды его символов на языке 1С 7.7
По сути нужен аналоги функции TextToHex, имеющейся в среде VisualBasic
Вот пример этой функции в онлайне:
|
|
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) Про уникод мы по старости не помним? ))
|
|
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан