.NET 4.x Перевод из двоичной в десятичную систему счисления - C#

Узнай цену своей работы

Формулировка задачи:

Пытаюсь сделать рекурсивный перевод в 10ую СС на C#, если передаю строку а-ля:
Листинг программы
  1. Console.Write(ToDecimal("1011",2)
возвращает 8, игнорируя все остальные единицы в строке, заранее благодарен за помощь
Листинг программы
  1. static int ToDecimal(string value, int fromBase)
  2. {
  3. if (value.Length != 0)
  4. {
  5. int num1 = Convert.ToInt32(Math.Pow(fromBase, value.Length - 1));
  6. int num2 = int.Parse(Convert.ToString(value[0]));
  7. return num1 * num2 + ToDecimal(string.Join("", value.Where(x => x != value[0]).ToArray()), fromBase);
  8. }
  9. else return 0;
  10. }

Решение задачи: «.NET 4.x Перевод из двоичной в десятичную систему счисления»

textual
Листинг программы
  1.  
  2. static decimal ToDecimal(string value, int fromBase,bool start, int pow)
  3.         {
  4.            
  5.             if (value.Length != 0)
  6.             {
  7.  
  8.                 if (start)
  9.                 {
  10.                     char[] separ = { ',' };
  11.                     if (value.Contains(','))
  12.                     {
  13.  
  14.                         string[] sep = value.Split(separ, 2);
  15.  
  16.                         pow = sep[0].Length;
  17.                         value = String.Concat(sep[0], sep[1]);
  18.                     }
  19.                     else
  20.                     {
  21.                         pow = value.Length;
  22.                     }
  23.                 }
  24.                 else
  25.                 {
  26.                     pow--;
  27.                 }
  28.                 decimal num1 = Convert.ToDecimal(Math.Pow(fromBase, pow-1));
  29.                 decimal num2 = decimal.Parse(value[0].ToString());
  30.                 return num1 * num2 + ToDecimal(value.Substring(1, value.Length-1), fromBase,false,pow);
  31.             }
  32.             else return 0;
  33.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы