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));
Console.WriteLine(Convert.ToString(5000, 2)); // -> Вывод: 1001110001000
string value
long index = value[l];
'1'
('2'
, '3'
, ...) будет неявно преобразовано в 1
(2
, 3
, ...). Зря. Так не будет. Вы получите код соответствующего символа. Ваше счастье, коды цифровых символов расположены один за другим, в порядке возрастания соответствующих им цифр, так что достаточно вычесть код нуля, чтобы получить нужное число:long index = value[l] - '0';