.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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д