0

私はC#を学んでいる初心者です。2桁の整数を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 を取得する必要があります。誰かが正しい軌道に乗るのを手伝ってくれますか?

どんな助けでも大歓迎です

4

2 に答える 2

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 に変更したり、拡張したりすることもできます。また、指定された文字列の末尾に最下位ビットがある (リトル エンディアン) と見なされます。

于 2013-11-02T08:38:03.623 に答える
0
 var int16 = Convert.ToInt16("0011000100110010", 2);
于 2013-11-02T07:29:06.370 に答える