Однажды потребовалось из шестнадцатеричной строки вида "0000FF6A9B4" получить число в десятичной системе счисления. Поиск привел к //infostart.ru/public/70053/ но в этой статье мы видим обратный перевод из десятичной в другую систему. Пришлось писать собственными лапами. В прилагающейся обработке для управляемых форм 8.2. лежит пример перевода. Если изменить шаблон с "0123456789ABCDEF" на "0123456789" - перевод будет происходить из десятичной <(^.^)> на "01234567" - из восьмеричной системы счисления, "01" - двоичной.
Для тех, кому лень качать обработку вот основной код:
&НаКлиенте
Функция ИзХСчислВЧисло(аф,Шаблон) // Шаблон = "0123456789ABCDEF"
аф = ВРег(аф); // на всякий случай.
ДлинаШаблона = СтрДлина(Шаблон);
ДлинаСтроки = СтрДлина(аф);
ТекСимвол = ДлинаСтроки;
Результат = 0;
Пока ТекСимвол > 0 Цикл
ОбработкаПрерыванияПользователя();
ОбрабатываемыйСимвол = Сред(аф, ТекСимвол,1);
ПозицияВШаблоне = Найти(Шаблон,ОбрабатываемыйСимвол)-1;
Результат = Результат + (ПозицияВШаблоне * pow(ДлинаШаблона,ДлинаСтроки-ТекСимвол));
ТекСимвол = ТекСимвол - 1;
КонецЦикла;
Возврат(Результат);
КонецФункции
UPD: Пользователь VUN предложил более компактный метод решения той же проблемы, без использования функции возведения в степень:
&НаКлиенте
Функция ИзХСчислВЧисло(аф,Шаблон)
аф = ВРег(аф); // на всякий случай.
ДлинаШаблона = СтрДлина(Шаблон);
ДлинаСтроки = СтрДлина(аф);
Результат = 0;
Для ТекСимвол = 1 По ДлинаСтроки Цикл
ОбрабатываемыйСимвол = Сред(аф, ТекСимвол,1);
ПозицияВШаблоне = Найти(Шаблон,ОбрабатываемыйСимвол)-1;
Результат = Результат * ДлинаШаблона + ПозицияВШаблоне;
КонецЦикла;
Возврат(Результат);
КонецФункции