2

それで、これが起こったことです:

私は大学へのプロジェクトに取り組んでおり、次の配列を使用して C# のクラスを持っています。

    private byte[] Key = { 123, 217, 19, 11, 24, 26, 85, 45, 114, 184, 27, 162, 37, 112, 222, 209, 241, 24, 175, 144, 173, 53, 196, 29, 24, 26, 17, 218, 131, 236, 53, 209 };
    private byte[] Vector = { 146, 64, 191, 111, 23, 3, 113, 119, 231, 121, 252, 112, 79, 32, 114, 156 };

これらはクラス コードにハードコーディングされており、テキストの暗号化と復号化に使用されます。

すべて正常に動作していますが、これらの値を操作できるようにする必要があります。つまり、これらのような値を挿入できるユーザー インターフェイスのテキスト ボックスを作成すると、アルゴリズムはこれらの値を取得して操作します。

これらの配列を文字列として読み取ると、次のようになります。

7B-D9-13-0B-18-1A-55-2D-72-B8-1B-A2-25-70-DE-D1-F1-18-AF-90-AD-35-C4-1D-18- 1A-11-DA-83-EC-35-D1

必要なのは、「123、217、19、11、24、26、85、45」のような文字列を読み取り、これを既に持っているものと同じようにバイト配列に変換するだけなので、別のバイトで暗号化クラスを使用できます配列。また、文字列を「,」で区切って空白を削除する部分をスキップできます。

調査しましたが、何も見つかりません。すべてストリーミングについて話しているため、通常の文字列または int 配列、変換、配列インデックスなどのように操作する必要があります...

何か案は?

4

1 に答える 1

1

次のように、コンマで区切られたバイトの文字列をバイト配列に解析できます。

public static byte[] ParseByteArrayFromInput(string input)
{
    return input.Split(',').Select(s => byte.Parse(s.Trim())).ToArray();
}

「1、2、3、4」のような入力が必要です。実際に解析できることを確認するための「検証」は行いません。それは別の練習です。入力が「猫、犬」のようなものだった場合、失敗します。using System.Linq;ソース ファイルの先頭にがあることを確認する必要があります。

仕組みは次のとおりです。まず、入力を受け取り、それをコンマで区切られた文字列配列に分割します。次に、空白をすべて取り除き、 を呼び出しbyte.Parseて、すべてを配列に変換します。いくつかのコメントで分解されたコードは次のとおりです。

public static byte[] ParseByteArrayFromInput(string input)
{
    var splitInput = input.Split(','); //Splits the input into a string array. The "split" happens on the comma character.
    var convertToBytes = splitInput.Select(s => //for each of these strings in the split input...
    {
        var trim = s.Trim(); //Trim away any whitespace surrounding the number.
        return byte.Parse(trim); //Parse the trimmed string into a byte.
    });
    return convertToBytes.ToArray();//Convert it into an array.
}

これは以前のものの「拡張」バージョンで、コメントと構文が少し異なるだけです。LINQ の詳細については、LINQに関する MSDN ドキュメントも参照してください。

于 2013-11-02T19:34:09.110 に答える