Эффективный алгоритм для преобразования между системой счисления - PullRequest
5 голосов
/ 23 августа 2010

Существует ли эффективный алгоритм преобразования между системой счисления, когда размер исходного целого числа произвольный?

Например, предположим, что существует целочисленный массив {1, 4, 8}, который в качестве входных данных равен 148 в десятичном формате. Он может быть преобразован в {9, 4} в шестнадцатеричном формате, или {2, 2, 4} в восьмеричном, или {1, 0, 0, 1, 0, 1, 0, 0} в двоичном формате, или просто { 148} в 1234-м формате или что-то в этом роде.

Это просто, когда фактическое значение может быть выражено в формате слова, поддерживаемом машиной. Но когда дело доходит до произвольного размера, я не могу найти эффективный способ лучше, чем O (n ^ 2).

1 Ответ

3 голосов
/ 23 августа 2010

Разделите на базу, отодвиньте модуль назад, промойте и повторите, пока коэффициент! = 0.

Так, например, конвертировать 148 в базу 16

148 / 16 = 9 r 4
  9 / 16 = 0 r 9

Итак, 148 в гексе - это 0x94. Это не должно занять так много времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...