Here are the working functions, I used it myself when I was working on the seven.
// Функия переводит число переданное в параметре // Значение в строку (либо число) в системе счисления X // X определяется линой шаблона, представление знаков разрядов // значение шаблона, где сивол шаблона[k] - есть представление // Например если шаблон "01", то перевод будет осуществлен в двоичную // систему счисления, если "01234567", то в восьмиричную // если "0123456789ABCDEF", то в шестнадцатиричную // если "ЛИ", то в двоичную, где 0 представлен буквой Л, а 1 буквой И // вариант шаблона: // "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwzyzАБВГДЕЖЗИЙКЛМНОПР СТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя!@#$%^&*()_-=+{}[]\|/,.:;'""> <" // представит Значение в сто пятидесятишести ричной системе счисления, // где соответствующий символ шаблона означает соответствующую цифру разряда Функция Из10в36(Знач Значение, Шаблон="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") Экспорт Значение = Число(Значение); Результат=""; Основание = СтрДлина(Шаблон); Пока Значение>0 цикл Остат = Значение%Основание; Результат1=Сред(Шаблон,Остат+1,1); Значение = (Значение-Остат)/Основание; Результат = Результат1 + Результат; КонецЦикла; Возврат Результат; КонецФункции Функция Из36в10(Стр, Шаблон="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") Экспорт //HEX: Шаблон = "0123456789ABCDEF" Стр = ВРег(Стр); // на всякий случай. ДлинаШаблона = СтрДлина(Шаблон); ДлинаСтроки = СтрДлина(Стр); ТекСимвол = ДлинаСтроки; Результат = 0; Пока ТекСимвол > 0 Цикл ОбработкаПрерыванияПользователя(); ОбрабатываемыйСимвол = Сред(Стр, ТекСимвол,1); Если ОбрабатываемыйСимвол = " " Тогда ПозицияВШаблоне = Найти(Шаблон,"0")-1; //продолжить; иначе ПозицияВШаблоне = Найти(Шаблон,ОбрабатываемыйСимвол)-1; КонецЕсли; //Результат = Результат + (ПозицияВШаблоне * power(ДлинаШаблона,ДлинаСтроки-ТекСимвол)); Результат = Результат + (ПозицияВШаблоне * POW(ДлинаШаблона,ДлинаСтроки-ТекСимвол)); ТекСимвол = ТекСимвол - 1; КонецЦикла; Возврат(Результат); КонецФункции
) _- = + {} [] \ | / ,.:;! '" "> <" // Функия переводит число переданное в параметре // Значение в строку (либо число) в системе счисления X // X определяется линой шаблона, представление знаков разрядов // значение шаблона, где сивол шаблона[k] - есть представление // Например если шаблон "01", то перевод будет осуществлен в двоичную // систему счисления, если "01234567", то в восьмиричную // если "0123456789ABCDEF", то в шестнадцатиричную // если "ЛИ", то в двоичную, где 0 представлен буквой Л, а 1 буквой И // вариант шаблона: // "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwzyzАБВГДЕЖЗИЙКЛМНОПР СТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя!@#$%^&*()_-=+{}[]\|/,.:;'""> <" // представит Значение в сто пятидесятишести ричной системе счисления, // где соответствующий символ шаблона означает соответствующую цифру разряда Функция Из10в36(Знач Значение, Шаблон="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") Экспорт Значение = Число(Значение); Результат=""; Основание = СтрДлина(Шаблон); Пока Значение>0 цикл Остат = Значение%Основание; Результат1=Сред(Шаблон,Остат+1,1); Значение = (Значение-Остат)/Основание; Результат = Результат1 + Результат; КонецЦикла; Возврат Результат; КонецФункции Функция Из36в10(Стр, Шаблон="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") Экспорт //HEX: Шаблон = "0123456789ABCDEF" Стр = ВРег(Стр); // на всякий случай. ДлинаШаблона = СтрДлина(Шаблон); ДлинаСтроки = СтрДлина(Стр); ТекСимвол = ДлинаСтроки; Результат = 0; Пока ТекСимвол > 0 Цикл ОбработкаПрерыванияПользователя(); ОбрабатываемыйСимвол = Сред(Стр, ТекСимвол,1); Если ОбрабатываемыйСимвол = " " Тогда ПозицияВШаблоне = Найти(Шаблон,"0")-1; //продолжить; иначе ПозицияВШаблоне = Найти(Шаблон,ОбрабатываемыйСимвол)-1; КонецЕсли; //Результат = Результат + (ПозицияВШаблоне * power(ДлинаШаблона,ДлинаСтроки-ТекСимвол)); Результат = Результат + (ПозицияВШаблоне * POW(ДлинаШаблона,ДлинаСтроки-ТекСимвол)); ТекСимвол = ТекСимвол - 1; КонецЦикла; Возврат(Результат); КонецФункции