Задача вроде бы тривиальная.
Но не нашел БЫСТРОГО ответа на вопрос :
Как перевести средствами встроенного языка 1С 10-ное число в HEX ?
Ну и заодно - в BIN, в OCT и в другие системы исчисления ?
Пришлось достать учебники по математике и написать эту статью.
В результате - получил 2ва алгоритма:
- первый : с рекурсивными вызовами после остатка от деления по основанию Х
- второй : через логарифмы с циклом
Коротко о главном:
1) первый алгоритм - получился быстрее. Вот результаты:
//Вариант 1: время = 77.697 сек , Обработано чисел = 1 000 000
//65535 (HEX) = FFFF
//65535 (BIN) = 1111111111111111
//65535 (OCT) = 177777
//65535 (_IdToStr) = 1EKF
//на одно вычисление = 0,000077697 сек для случая _IdToStr
//Вариант 2: время = 85.547 сек, Обработано чисел = 1 000 000
//65535 (HEX) = FFFF
//65535 (BIN) = 1111111111111111
//65535 (OCT) = 177777
//65535 (_IdToStr) = 1EKF
// на одно вычисление = 0,000085547 сек для случая _IdToStr
2) второй алгоритм (если честно) был подсмотрен в реализации SQL-функции для _IdToStr
и модифицирован для универсальности (не только для основания 36, а для любого основания).
Эта SQL-функция широко используется в сообществе 1С++
(К сожалению, автора-первооткрывателя : не знаю, поэтому - поклон ему и всем участникам проекта )
Алгоритмы (что во вложении) написаны для 1С.7.7
Алгоритмы универсальные: поэтому легко переделать для 1С8.* с учетом особенностей языков.