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