Простые типы / Числа / Целые

Десятичное = 42;

Двоичное = Число_В_XСчисление(Десятичное, "01");
//Двоичное = '101010'

Восьмеричное = Число_В_XСчисление(
    Десятичное, "01234567");
//Восьмеричное = '52'

Шестнадцатеричное = Число_В_XСчисление(
    Десятичное, "0123456789ABCDEF");
//Шестнадцатеричное = '2A'

Ноль = Число_В_XСчисление(0"01");
//Ноль = '0'

//Обратный перевод
Обратно = XСчисление_В_Число("2A",
    "0123456789ABCDEF");
//Обратно = 42

Сообщить("Двоичное = '" + Двоичное + "'");
Сообщить("Восьмеричное = '" +
    Восьмеричное + "'");
Сообщить("Шестнадцатеричное = '" +
    Шестнадцатеричное + "'");
Сообщить("Ноль = '" + Ноль + "'");
Сообщить("Обратно = " + Обратно);

//Основание системы счисления равно
//длине шаблона, а знаки разрядов берут
//прямо из него: "01" - двоичная,
//"01234567" - восьмеричная,
//"0123456789ABCDEF" - шестнадцатеричная.
//с шаблоном "ЛИ" выйдет та же двоичная,
//только ноль обозначен буквой Л,
//а единица - буквой И
//Автор: Влад Косилов
Функция Число_В_XСчисление(Знач Значение, Шаблон)
    Результат = "";
    Основание = СтрДлина(Шаблон);

    Пока Значение > 0 Цикл
        Остаток = Значение % Основание;
        Цифра = Сред(Шаблон, Остаток + 11);
        Значение = (Значение - Остаток) / Основание;
        Результат = Цифра + Результат;
    КонецЦикла;

    //Ноль циклом не обрабатывается:
    //первый знак шаблона и есть ноль
    Если Результат = "" Тогда
        Результат = Сред(Шаблон, 11);
    КонецЕсли;

    Возврат Результат;
КонецФункции

//Обратный перевод: позиция знака в шаблоне
//и есть значение разряда
Функция XСчисление_В_Число(Текст, Шаблон)
    Результат = 0;
    Основание = СтрДлина(Шаблон);

    Для Н = 1 По СтрДлина(Текст) Цикл
        Цифра = Сред(Текст, Н, 1);
        Разряд = СтрНайти(Шаблон, Цифра) - 1;
        Результат = Результат * Основание +
            Разряд;
    КонецЦикла;

    Возврат Результат;
КонецФункции