c#使用ToCharArray实现二进制和十进制转换

不知道为什么会显示超出范围
在学习了仅一学期的c但好像没懂什么后
我们又当上了学校本专业(电信)第一批要上c#的小白鼠
这c# teacher也真不行,上课声音小的要s,内容讲的飞快,讲这个函数时候就讲了没几分钟,事例,原理什么的都不清楚。这次实验任务是完成十进制和二进制互相转换
这只是我上的第三节c#啊,而且专业也不对口
言归正传这个错误的原因是什么,这个函数又具体该怎么运用什么原理

img

应该是s2不是s1

十进制转2进制

/// <summary>
    /// 将值转为2进制字符串
    /// </summary>
    /// <param name="value">要转换的值</param>
    /// <param name="Take">保留值的位数</param>
    /// <returns>16进制字符串</returns>
    public static string ToString2(int value, int Take = 8)
    {
//Convert.ToString(value, 2)同时支持转2,8,10,16进制
        return Convert.ToString(value, 2).PadLeft(Take, '0');
    }

2进制转10进制

var IntNumber = Convert.ToInt32("1111", 2);//1111是二进制字符串,这个方法同时支持281016进制转10进制

观察你的代码应该是想让用户输入01最后输入然后将2进制转10进制
完整代码如下


Console.WriteLine("请输入2进制数,按B结束");

            while (true)
            {
                var value = Console.ReadLine();
                if (value == "B")
                {
                    break;
                }
                try
                {
                    var IntNumber = Convert.ToInt32(value, 2);
                    Console.WriteLine(string.Format("二进制[{0}]转十进制后[{1}]", value, IntNumber));
                }
                catch (Exception)
                {
                    Console.WriteLine("不是2进制数");
                }
            }
            Console.WriteLine("按下任意键结束");
            Console.ReadKey();