【问题标题】:Binary number to decimal (doesn't work well, why?)二进制数转十进制(效果不好,为什么?)
【发布时间】:2013-03-13 21:25:27
【问题描述】:

大家好! 我写了这个,但效果不好,这让我很恼火。我试图找到解决方案,但没有发现任何错误。

    private string binaris_decimalis(string binaris_szam)
    {
        char[] binaris_karakterek = binaris_szam.ToCharArray();

        int decimalis_szam_int = 0;
        string decimalis_szam;

        for (int szam = 0; binaris_karakterek.Length > szam; szam++)
        {
            decimalis_szam_int = decimalis_szam_int * 2 + Convert.ToInt32(binaris_karakterek[szam]);
        }

        decimalis_szam = Convert.ToString(decimalis_szam_int);

        return decimalis_szam;
    }

这样使用:

    private void valtas_2_Click(object sender, EventArgs e)
    {
        binaris_szam_2 = binaris_2.Text.Split('.');

        for (int szam = 0; 4 > szam; szam++)
        {
            decimalis_szam_2[szam] = binaris_decimalis(binaris_szam_2[szam]);
        }

        decimalis_2.Text = decimalis_szam_2[0] + "." + decimalis_szam_2[1] + "." + decimalis_szam_2[2] + "." + decimalis_szam_2[3];
    }

binaris_szam_2 和 decimalis_szam2 被声明为公共字符串[]:

string[] binaris_szam_2 = new string[4];
string[] decimalis_szam_2 = new string[4];

文本输入如下:

10000000.10000000.10000000.10000000

文本输出应如下所示:

128.128.128.128

但是输出是:

12368.12368.12368.12368

如果有人可以帮助我,我将不胜感激!

【问题讨论】:

  • 核心问题是您的char 值上的Convert.ToInt32。这些不会代表“0”或“1”,而是它们的char 整数表示——即“48”和“49”分别完全抛弃了数学。无论如何,Luis Tellez 的答案使用起来要简单得多。

标签: c# binary decimal


【解决方案1】:

我不知道你的代码有什么问题,但你可以直接用 c# 来做。

Convert.ToInt32("10000000", 2).ToString(); // output  128

【讨论】:

  • 我不知道Convert.ToInt32这个功能,谢谢你的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
  • 2014-10-30
  • 2012-10-26
  • 2012-06-26
  • 2010-12-08
  • 1970-01-01
  • 2020-10-31
相关资源
最近更新 更多