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”这样的输入。它不做任何“验证”来确保它实际上可以被解析。那是另一个练习。如果输入类似于“Cat, Dog”,它将失败。您需要确保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 的MSDN 文档以了解有关 LINQ 的更多信息。

于 2013-11-02T19:34:09.110 回答