Я пытаюсь написать программу на C ++, которая выполняет базовые преобразования.
Я хочу преобразовать десятичное число во все другие целочисленные основания от 2 до 20.
Существует ли эффективный и простой в реализации алгоритм для базовых преобразований?
Я не понимаю, где именно проблема? Это очень легко и просто сделать базовое преобразование: вы делаете это, как если бы вы делали это вручную.
Пример:
1025 (десятичное число) к основанию 15:
1025 / 15 = 68 , remainder 5
68 / 15 = 4 , remainder 8
4 / 15 = 0 , remainder 4
Число в базе 15 составляет 485
У вас могут быть две проблемы:
Разбор исходной базы в собственное целочисленное представление компьютера (strtol
довольно хорош в этом).
Форматирование в новую базу. (itoa
довольно хорош в этом).
Если вы хотите написать это самостоятельно, вам может понравиться div
функция. Вы вводите число и основание, и оно отделяет самую правую цифру. Повторите, чтобы получить все цифры.
Если вы хотите быть более эффективным, вы можете разделить на квадраты и получить две цифры за раз (используйте таблицу поиска, чтобы получить символы ASCII для обеих цифр). Вот пример некоторых очень эффективных реализаций. Поменять его на другую базу не составит труда.