// Функция переводит обычную cтроку в шестнадцатеричное представление // Параметры: // ТекстСообщения - Строка - Текст сообщения // ТипКодировки - Число - Тип кодировки (1 - каждый символ представляется 2 байтами, 0 - 1 байтом) // Возвращаемое значение: Строка - Строка после перекодировки // Функция Str2Hex(ТекстСообщения, ТипКодировки) СтрокаЗнаков = ""; Если ТипКодировки = 1 Тогда ДлинаКодаСимвола = 4; Иначе ДлинаКодаСимвола = 2; КонецЕсли; Для К = 1 По СтрДлина(ТекстСообщения) Цикл СтрокаЗнаков = СтрокаЗнаков + Padl(DecToHex(КодСимвола(Сред(ТекстСообщения, К, 1))), ДлинаКодаСимвола, "0"); КонецЦикла; Возврат СтрокаЗнаков; КонецФункции // Str2Hex() // Функция переводит cтроку из шестнадцатеричного представления в обычную строку // Параметры: // СтрокаСимволов - Строка - Текст в шестнадцатеричном виде // ПризнакКода - Строка - Тип кодировки ("0" - каждый символ представляется 1 байтами, "1" - 2 байтами) // Возвращаемое значение: Строка - Строка после перекодировки // Функция StrHexToStr(СтрокаСимволов, ПризнакКода) Экспорт Если Число(ПризнакКода) = 0 Тогда КоличествоСимволов = 2; Иначе КоличествоСимволов = 4; КонецЕсли; к = 1; Результат = ""; Пока к < СтрДлина(СтрокаСимволов) Цикл Строка = Сред(СтрокаСимволов, к, КоличествоСимволов); Результат = Результат + Символ(HexToDec(Строка)); к = к + КоличествоСимволов; КонецЦикла; Возврат Результат; КонецФункции // StrHexToStr()
// Функция переводит десятичное число в шестнадцатеричное // Параметры: _Число - Число - Десятичное число // Возвращаемое значение: Строка - Шестнадцатеричное число // Функция DecToHex(Знач _Число) База = 16; Результат = ""; Пока _Число <> 0 Цикл Поз =_Число % База; Результат = Сред("0123456789ABCDEF", Поз + 1, 1) + Результат; _Число = Цел(_Число / База); КонецЦикла; Возврат Результат; КонецФункции // DecToHex() // Функция переводит шестнадцатеричное число в десятичное // Параметры: _Hex - Строка - Шестнадцатеричное число // Возвращаемое значение: Число - Десятичное число // Функция HexToDec(Знач _Hex) База = 16; _Hex = СокрЛП(_Hex); СтаршаяСтепень = СтрДлина(_Hex) - 1; Результат = 0; счСимволов = 1; Пока СтаршаяСтепень >=0 Цикл _HexСимвол = Сред(_Hex, счСимволов, 1); Представление = Найти("0123456789ABCDEF", _HexСимвол) - 1; Результат = Результат + Представление * Степень(База, СтаршаяСтепень); СтаршаяСтепень = СтаршаяСтепень - 1; СчСимволов = СчСимволов + 1; КонецЦикла; Возврат Результат; КонецФункции // HexToDec()