Преобразование чисел из одной системы счисления в другую

Рейтинг: 1Ответов: 1Опубликовано: 08.06.2011

Имеется проблема:

  • есть строковое представление числа в системе счисления с основанием X;
  • требуется получить: число как int, строковую запись числа в системе счисления с основанием Y;
  • формат входной строки - сколько угодно пробелов, запись числа. Другие символы недопустимы и введены не будут.

Желательно использование ф-ций стандартной библиотеки. Возможно использование методов вручную.

Пока мне приходит мысль использовать strtol(), а затем ltoa().

PS: да, этот будет очередной мега-калькулятор :-)

Ответы

▲ 3Принят

Ну, если идти по пути наименьшего сопротивления и меньших времязатрат, то я бы взял готовую реализацию atoi и, добавив параметр int radix, пользовался: atoi.c, - тут она вполне ничего.

Изменения просты, как валенок: вместо 10 поставить radix, ну и строку допустимых символов буквами до посинения заполнить. Если ввод будет правильный, то и проверять на превышение полномочий не потребуется:3

Ну и строчку с проверкой на пробелы в цикл ткнуть - она уже присутствует, можно даже не писать, а копипастить.

У меня с системами счисления 2, 8 и 16 оно справилось тока давай=) Обратно, понятное дело, itoa.

Вот... А чем именно strtol-itoa не устраивает?