.NET 4.x Перевод из двоичной в десятичную систему счисления - C#
Формулировка задачи:
Пытаюсь сделать рекурсивный перевод в 10ую СС на C#, если передаю строку а-ля:
возвращает 8, игнорируя все остальные единицы в строке, заранее благодарен за помощь
Console.Write(ToDecimal("1011",2) static int ToDecimal(string value, int fromBase)
{
if (value.Length != 0)
{
int num1 = Convert.ToInt32(Math.Pow(fromBase, value.Length - 1));
int num2 = int.Parse(Convert.ToString(value[0]));
return num1 * num2 + ToDecimal(string.Join("", value.Where(x => x != value[0]).ToArray()), fromBase);
}
else return 0;
}Решение задачи: «.NET 4.x Перевод из двоичной в десятичную систему счисления»
textual
Листинг программы
static decimal ToDecimal(string value, int fromBase,bool start, int pow)
{
if (value.Length != 0)
{
if (start)
{
char[] separ = { ',' };
if (value.Contains(','))
{
string[] sep = value.Split(separ, 2);
pow = sep[0].Length;
value = String.Concat(sep[0], sep[1]);
}
else
{
pow = value.Length;
}
}
else
{
pow--;
}
decimal num1 = Convert.ToDecimal(Math.Pow(fromBase, pow-1));
decimal num2 = decimal.Parse(value[0].ToString());
return num1 * num2 + ToDecimal(value.Substring(1, value.Length-1), fromBase,false,pow);
}
else return 0;
}