将表示16位的字符串转换为int c#

时间:2013-11-02 06:50:30

标签: c# binary type-conversion

我是一名学习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。有人可以帮助我走上正确的轨道吗?

任何帮助都非常适合

2 个答案:

答案 0 :(得分: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,或者根据需要进行扩展。此外,它假定给定的字符串在末尾具有最低有效位(小端)。

答案 1 :(得分:0)

 var int16 = Convert.ToInt16("0011000100110010", 2);