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

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

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

Пытаюсь сделать рекурсивный перевод в 10ую СС на C#, если передаю строку а-ля:
Console.Write(ToDecimal("1011",2)
возвращает 8, игнорируя все остальные единицы в строке, заранее благодарен за помощь
        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;
        }

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


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

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

15   голосов , оценка 4.133 из 5
Похожие ответы