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