Как я могу преобразовать число в строке в любую базу в сборке? - PullRequest
1 голос
/ 16 мая 2010

Как я могу преобразовать число, содержащееся в строке, из любой базы в любую другую базу?

Основания могут быть любыми: 2, 16, 10, 4, 8, 9.

Я ожидаю, что пользователь введет базовый номер. Пользователь введет выходную базу (базу для преобразования). Пользователь введет число, которое он хочет конвертировать.

Предварительно мысли: Я сохраню входную базу и выходную базу в переменных. Затем я сохраню число, которое он вводит в строку (потому что он может ввести любое число (шестнадцатеричное, двоичное, основание-5 ..).

Я просто пытаюсь выяснить, как преобразовать эту строку в число, чтобы я мог преобразовать ее в выходную базу.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 16 мая 2010

Общий алгоритм замены числа n на базу b выглядит примерно так:

i = 0
while(n != 0)
   answer[i] = n mod b
   n /= b
   i++

(Обратите внимание, что ответ [0] содержит наименее значащую цифру ответа.) Имеет ли это смысл? Какую часть этого псевдокода у вас возникают проблемы при реализации?

1 голос
/ 17 мая 2010

Чтобы преобразовать строку в целое число, вам нужно взглянуть на таблицу ASCII .

перебирайте каждый символ в вашей строке, пока не дойдете до конца, и исходя из того, что символ и в каком диапазоне он находится: от «0» до «9», от «a» до «f», от «A» до «F», вам нужно будет вычесть значение нижнего символа в его диапазоне и добавить любую подходящую сумму. затем добавьте это к значению аккумулятора, и вы должны быть готовы к работе. Я думаю, вам также нужно проверить любые значения, которые указывают на то, на каком основании находится это значение (например, я ожидаю, что шестнадцатеричные значения будут иметь префикс «0x»).

Так, например, если вы видите «1», вам нужно вычесть «0». если вы видите «а», вам нужно вычесть «а» и добавить 0x0a.

...