C# 如何用c语言将二进制数转换成十进制数#

C# 如何用c语言将二进制数转换成十进制数#,c#,binary,C#,Binary,!!!!回答 我需要一点帮助来完成我的简单位操作程序 向用户询问一个号码 打印数字的二进制表示形式 向用户询问位位置和位值 应用更改 以二进制显示用户所做的更改 ??????将更改后的值再次转换为数字 我只需要在第5步中得到一点帮助,正如你从我的代码中可以看到的那样,我是一个彻头彻尾的傻瓜,所以请不要笑:)任何帮助都将不胜感激 Console.WriteLine("Enter integer number"); int number = Convert.ToInt32(Console.ReadL

!!!!回答

我需要一点帮助来完成我的简单位操作程序

  • 向用户询问一个号码
  • 打印数字的二进制表示形式
  • 向用户询问位位置和位值
  • 应用更改
  • 以二进制显示用户所做的更改
  • ??????将更改后的值再次转换为数字 我只需要在第5步中得到一点帮助,正如你从我的代码中可以看到的那样,我是一个彻头彻尾的傻瓜,所以请不要笑:)任何帮助都将不胜感激

    Console.WriteLine("Enter integer number");
    int number = Convert.ToInt32(Console.ReadLine());
    string binaryString = Convert.ToString(number, 2);
    Console.WriteLine("The binary representation of {0} is", number);
    Console.WriteLine(binaryString.PadLeft(16, '0'));
    
    
    BitArray b = new BitArray(new int[] { number }); 
    
    
    Console.WriteLine("Enter bit's position (0 to 15)");
    int position = Convert.ToInt32(Console.ReadLine());
    
    Console.WriteLine("Enter bit's value (true or false)");
    bool value = Convert.ToBoolean(Console.ReadLine());
    
    b.Set(position, value); //set value to given position based on input from the user
    
    Console.WriteLine("Your changes transformed \n{0} \nto ",binaryString.PadLeft(16,'0'));
    
    for (int i = 15; i >= 0; i--) 
    {
        if (b[i] == true)
        {
            Console.Write(1);
        }
        else
        {
            Console.Write(0);
        }
    }
    Console.WriteLine();
    
    具有一个重载,该重载采用整数的字符串表示形式所用的基

     Console.WriteLine(Convert.ToInt32(binaryString, 2))
    
    但是,更改位数组中的位后,要使用Convert.ToInt32,需要将位数组重新转换为字符串

    此代码从此处改编,因此

    .....
    binaryString = ToBitString(b);
    Console.WriteLine(Convert.ToInt32(binaryString, 2))
    .....
    
    
    public string ToBitString(BitArray bits)
    {
        var sb = new StringBuilder();
        for (int i = bits.Count - 1; i>= 0; i--)
        {
            char c = bits[i] ? '1' : '0';
            sb.Append(c);
        }
        return sb.ToString();
    }
    

    将二进制表示形式存储到变量中:

    string binary = binaryString.PadLeft(16, '0');
    Console.WriteLine(binary);
    
    然后获取位置和值:

     Console.WriteLine("Enter bit's position (0 to 15)");
     int position = Convert.ToInt32(Console.ReadLine());
    
     Console.WriteLine("Enter bit's value (true or false)");
     bool value = Convert.ToBoolean(Console.ReadLine());
    
    进行以下更改:

    var chars = binary.ToCharArray();
    chars[position] = value ? '1' : '0';
    binary = new string(chars);
    
    显示新的二进制表示形式及其十进制等效形式:

    Console.WriteLine("New binary value: {0}",binary);
    Console.WriteLine("New decimal value: {0}", Convert.ToInt32(binary, 2));
    

    将最终循环更改为以下内容:

    int v = 0;
    for (int i = 15; i >= 0; i--)
    {
       if (b[i] == true)
       {
           Console.Write(1);
           v += (int)Math.Pow(2, i);
       }
       else
       {
           Console.Write(0);
       }
    }
    

    这对你有帮助。不清楚你在问什么?请将问题本地化,只问你想问的部分谢谢大家,我在这里问完问题后立即找到了解决方案我花了一整天的时间试图完成它这对我来说很有效,我也会尝试bansi的建议int[]array=new int[1];b、 CopyTo(数组,0);Console.WriteLine(数组[0]);如果你有一个正确的答案,你应该考虑把它作为一个答案,并把它标记为被接受的答案,而不是在你的OP中添加“回答!”。谢谢大家,我会查看你的建议,以便理解它背后的逻辑: