【问题标题】:C# Program that converts decimal number to binary将十进制数转换为二进制的C#程序
【发布时间】:2016-03-18 15:25:09
【问题描述】:

所以,我必须编写一个程序,将十进制数转换为二进制数并打印出来,但不使用 Convert。我到了可以打印出数字的地步,但它是相反的(例如:12 出现为 0011 而不是 1100),有人知道如何解决这个问题吗?这是我的代码:

        Console.Write("Number = ");
        int n = int.Parse(Console.ReadLine());
        string counter = " ";


        do
        {

            if (n % 2 == 0)
            {                  
                counter = "0";
            }

            else if (n % 2 != 0)
            {
                 counter = "1";
            }

            Console.Write(counter);

            n = n / 2;
        }
        while (n >= 1);

【问题讨论】:

标签: c# binary


【解决方案1】:

简单的解决方案是在开头添加它们:

Console.Write("Number = ");
int n = int.Parse(Console.ReadLine());
string counter = "";

while (n >= 1)
{
   counter = (n % 2) + counter;
   n = n / 2;
}
Console.Write(counter);

其实你甚至不需要 if 语句

【讨论】:

    【解决方案2】:

    您可以将它们插入到 StringBuidler 中,而不是立即编写它们

    var sb = new StringBuilder();
    ....
    sb.Insert(0, counter);
    

    然后使用那个 StringBuilder

    var result = sb.ToString();
    

    【讨论】:

      【解决方案3】:

      计算完后可以反转字符串

      【讨论】:

      • 字符串计数器; // 你的号码 char[] inputarray = input.ToCharArray(); Array.Reverse(inputarray);计数器 = 新字符串(输入数组);
      【解决方案4】:

      您以相反的顺序生成数字,因为当您使用 % 2 来确定位值时,您从最低有效数字开始。不过,您正在做的事情还不错,因为它是确定位的便捷方法。您所要做的就是通过收集输出来反转输出,直到您生成所有位,然后以相反的顺序输出所有内容。 (我没有尝试编译运行,可能有错别字)

      一个简单的解决方案是

      System.Text.StringBuilder reversi = new System.Text.StringBuilder();

      然后在你的代码中替换

      Console.Write(counter);
      

      reversi.Append(counter);
      

      最后添加循环的结尾,添加这样的代码

      string s = reversi.ToString();
      for (int ii = s.Length-1; ii >= 0; --ii)
      {
        Console.Write(s[ii]);
      }
      

      有更好的方法可以做到这一点,但这很容易理解为什么它会修复你的代码——看起来你正在尝试学习 C#。

      【讨论】:

        【解决方案5】:

        如果我没记错的话

        int value = 8;
        string binary = Convert.ToString(value, 2);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-02
          • 1970-01-01
          • 2022-01-01
          • 2014-04-21
          • 2021-12-30
          • 2017-07-19
          • 2013-11-26
          • 1970-01-01
          相关资源
          最近更新 更多