字符串到byte[]数组

本文关键字:数组 byte 字符串 | 更新日期: 2023-09-27 18:22:25

好吧,我知道这已经被打败了,但我不能在这里或任何地方找到谷歌上的所有

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

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更新一次,所以必须有点快

字符串到byte[]数组

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

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

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

试试这样的东西:

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]);
    }
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();