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

static long To(string value, int fromBase)
            {
                long rank = 1;
                long result = 0;
                for (var l = value.Length - 1; l >= 0; l--)
                {
                    long index = value[l];
                    result += rank * index;
                    rank *= fromBase;
                }

                return result;
            }
            Console.WriteLine(To("231", 5));


Не понимаю в чем ошибка. Подскажите пожалуйста!
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
@OwDafuq
Чем вам не угодил стандартный Convert.ToString?
Пример:
Console.WriteLine(Convert.ToString(5000, 2)); // -> Вывод: 1001110001000
Ответ написан
0xD34F
@0xD34F
string value

long index = value[l];

То есть, вы ждёте, что '1' ('2', '3', ...) будет неявно преобразовано в 1 (2, 3, ...). Зря. Так не будет. Вы получите код соответствующего символа. Ваше счастье, коды цифровых символов расположены один за другим, в порядке возрастания соответствующих им цифр, так что достаточно вычесть код нуля, чтобы получить нужное число:

long index = value[l] - '0';
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы