【问题标题】:Convert string that represent 16bits to a int c#将表示 16 位的字符串转换为 int c#
【发布时间】:2013-11-02 16:38:03
【问题描述】:

我是一个学习c#的初学者。 我编写了一种方法,可以将两位整数转换为 16 位序列

// takes input from user and convert it
private void Button_Click(object sender, RoutedEventArgs e)
    {
        string input = key.Text;
        string mykey = "";
        foreach (var item in input)
        {
            mykey += Binary(item);
        }
        key.Text = mykey;

    }


private string Binary(Char ch)
    {
        string result = string.Empty;
        int asciiCode;
        char[] bits = new char[8];

        asciiCode = (int)ch;
        result = Convert.ToString(asciiCode, 2);;
        bits = result.PadLeft(8, '0').ToCharArray();

        return string.Join("",bits);
    }

这可能有点复杂,但它正在工作。但是我的主要问题是我想反转这个过程:即从 0011000100110010 之类的序列中,我应该检索 12 的 int。有人可以帮助我走上正确的轨道吗?

非常感谢任何帮助

【问题讨论】:

  • 谢谢,但也许我的问题不是很清楚。我想做相反的事情,我有我的二进制字符串,我想取回一个 int 所以,表格 0011000100110010 我想得到 12。
  • 是你要找的吗? int output = Convert.ToInt32(input, 2);
  • 我试过了,但似乎不起作用Additional non-parsable characters are at the end of the string. 是错误。我认为这与我填充字符串以获得 16 位的事实有关......
  • 12的二进制表示“0011000100110010”在什么世界?

标签: c# binary type-conversion


【解决方案1】:

鉴于您正在学习 C#,我会给您一个简单、直接的示例,即使它不是最佳的或花哨的。我认为它会更好地为您服务。

  static int GetInt(string value)
    {
        double result = 0d;//double
        IEnumerable<char> target = value.Reverse();
        int index = 0;
        foreach (int c in target)
        {
            if (c != '0')
                result += (c - '0') * Math.Pow(2, index);
            index++;
        }

        return (int)result;
    }

此代码适用于任何填充。此外,如果您愿意,可以将其更改为 Int16 或根据需要对其进行扩展。此外,它假定给定字符串的末尾有最低有效位(小端序)。

【讨论】:

    【解决方案2】:
     var int16 = Convert.ToInt16("0011000100110010", 2);
    

    【讨论】:

      猜你喜欢
      • 2016-05-16
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      相关资源
      最近更新 更多