c# - 如何使用 C# 将二进制数转换为十进制值

标签 c# binary

!!!已回答!!!

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

  1. 询问用户号码
  2. 打印数字的二进制表示形式
  3. 询问用户位位置和位值
  4. 应用更改
  5. 以二进制形式显示用户所做的更改
  6. ??????再次将变化转换为数字。 ?????????

我只需要第 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();

最佳答案

Convert.ToInt32有一个重载,它采用用于整数字符串表示形式的基数

 Console.WriteLine(Convert.ToInt32(binaryString, 2))

但是,在更改 BitArray 内的位后,要使用 Convert.ToInt32,您需要将位数组重新转换为字符串

此代码改编自another answer这里就这样

.....
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();
}

关于c# - 如何使用 C# 将二进制数转换为十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22555722/

相关文章:

c# - 使用 MultipartFormDataContent 生成错误的 Content-Type header

c# - 运行时的代码契约

c# - ASP.NET MVC4 - 以不止一种方法添加到 ViewBag?

mysql - 在 MySQL 中存储二进制字符串

java - 如何保持写入文件的二进制数据的一致性?

c - 如何计算二进制数C中的最大块长度

algorithm - 解码用过时语言压缩的文件

C# .NET 4.0 测试框架?

javascript - 使用 indesign 脚本上传到 ftp 文件夹

c# - 如何在 SQL Server 2005 中执行服务器端分页