Десятичное = 42;
Двоичное = Число_В_XСчисление(Десятичное, "01");
//Двоичное = '101010'
Восьмеричное = Число_В_XСчисление(
Десятичное, "01234567");
//Восьмеричное = '52'
Шестнадцатеричное = Число_В_XСчисление(
Десятичное, "0123456789ABCDEF");
//Шестнадцатеричное = '2A'
Ноль = Число_В_XСчисление(0, "01");
//Ноль = '0'
//Обратный перевод
Обратно = XСчисление_В_Число("2A",
"0123456789ABCDEF");
//Обратно = 42
Сообщить("Двоичное = '" + Двоичное + "'");
Сообщить("Восьмеричное = '" +
Восьмеричное + "'");
Сообщить("Шестнадцатеричное = '" +
Шестнадцатеричное + "'");
Сообщить("Ноль = '" + Ноль + "'");
Сообщить("Обратно = " + Обратно);
//Основание системы счисления равно
//длине шаблона, а знаки разрядов берут
//прямо из него: "01" - двоичная,
//"01234567" - восьмеричная,
//"0123456789ABCDEF" - шестнадцатеричная.
//с шаблоном "ЛИ" выйдет та же двоичная,
//только ноль обозначен буквой Л,
//а единица - буквой И
//Автор: Влад Косилов
Функция Число_В_XСчисление(Знач Значение, Шаблон)
Результат = "";
Основание = СтрДлина(Шаблон);
Пока Значение > 0 Цикл
Остаток = Значение % Основание;
Цифра = Сред(Шаблон, Остаток + 1, 1);
Значение = (Значение - Остаток) / Основание;
Результат = Цифра + Результат;
КонецЦикла;
//Ноль циклом не обрабатывается:
//первый знак шаблона и есть ноль
Если Результат = "" Тогда
Результат = Сред(Шаблон, 1, 1);
КонецЕсли;
Возврат Результат;
КонецФункции
//Обратный перевод: позиция знака в шаблоне
//и есть значение разряда
Функция XСчисление_В_Число(Текст, Шаблон)
Результат = 0;
Основание = СтрДлина(Шаблон);
Для Н = 1 По СтрДлина(Текст) Цикл
Цифра = Сред(Текст, Н, 1);
Разряд = СтрНайти(Шаблон, Цифра) - 1;
Результат = Результат * Основание +
Разряд;
КонецЦикла;
Возврат Результат;
КонецФункции