string to byte [] array

时间:2012-02-02 07:42:05

标签: c# visual-studio

好吧,我知道这已经被打败了,但是我无法接触谷歌这里或任何地方的所有工作

我有一个看起来像这样的字符串

1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

我存储此字符串

每个数字的范围为0到254,字符串几乎是随机的 我需要将其转换为字节数组,因为硬件 更改 这就是硬件正在寻找的东西

hardware.command(DeviceID, byte[]);

我通过这样做测试了硬件

hardware.command(1, new byte[] { 0, 0, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38 });

一切都很好

每个部分是硬件上的PWM输出百分比 这会每4ms更新一次,所以它必须有点快

3 个答案:

答案 0 :(得分:2)

我不知道这是否满足您的性能要求,但最简单的方法是使用LINQ:

var myByteArray = (from s in myString.Split(',') select byte.Parse(s)).ToArray();

编辑:我最初写的是byte.Parse(s.Trim()),但Byte.Parse并不介意周围的空格。

答案 1 :(得分:1)

尝试这样的事情:

string datastring = "1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0";
byte[] data = datastring.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(s => byte.Parse(s)).ToArray();

或没有LINQ:

    var datastring = "1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0";
    var tokens = datastring.Split(',');
    byte[] data = new byte[tokens.Length];
    for (int i = 0; i < tokens.Length; i++) {
        data[i] = byte.Parse(tokens[i]);
    }

答案 2 :(得分:1)

String[] substringArray = String.Split(',');
List<Bytes> listOfBytes = new List<Bytes>();
foreach(String substring in substringArray )
{
    substring = substring.Trim();
    listOfBytes.Add(Byte.Parse(substring));
}
Byte [] byteTable = listOfBytes.ToArray();