C# C、 如何按分隔符拆分字节数组?

C# C、 如何按分隔符拆分字节数组?,c#,split,bytearray,delimiter,C#,Split,Bytearray,Delimiter,我有一个字节数组,它包含一个由两个字节的十六进制数组成的集合,用“,”分隔。它怎么能被“,”分割,然后把数字转换成整数呢 字节数组包含ascii格式的值 编辑: 范例 我的有效字符范围是0到9,A到F和逗号 所以我的流应该是这样的 70、67、65、57、44、55、68、66、53、44 这相当于十六进制 FCA9和7DB5这应该可以工作,尽管我的C有点生锈 byte[] input = { 1, 0, 0, 0, ',', 10, 15, ',', 100, 0, 0, 0, ','

我有一个字节数组,它包含一个由两个字节的十六进制数组成的集合,用“,”分隔。它怎么能被“,”分割,然后把数字转换成整数呢

字节数组包含ascii格式的值

编辑: 范例

我的有效字符范围是0到9,A到F和逗号 所以我的流应该是这样的

70、67、65、57、44、55、68、66、53、44

这相当于十六进制


FCA9和7DB5

这应该可以工作,尽管我的C有点生锈

byte[]    input = { 1, 0, 0, 0, ',', 10, 15, ',', 100, 0, 0, 0, ',' };
List<int> output = new List<int>();

int lastIndex = 0;

for (int i = 0; i < input.Length; i ++) {
    if (input[i] == ',')
    {
         if (i - lastIndex == 4)
         {
             byte[] tmp = { input[i - 4], input[i - 3], input[i - 2], input[i - 1] };
             output.Add(BitConverter.ToInt32(tmp, 0));
         }

         lastIndex = i + 1;
    }
}

如果您的字节数组是真正的ASCII编码,每个字符一个字节,那么以下操作将起作用:

int[] ints = Encoding.ASCII.GetString(asciiEncodedBytes).Split(',')
             .Select(x => Convert.ToInt32(x,16)).ToArray();

这也将处理大小写混合的十六进制数和可变长度的十六进制数。

我将字节数组转换为字符串,然后使用string.Split','

实际上,我是通过读取串行端口来获取字节数组的。所以我可能有不规则的输入。是否可以先用逗号分割数组,然后检查每个数组的长度是否为4?我的问题是,实际上是2字节。格式为ascii,因此每个数字在字节数组中占据4个位置。我的有效范围在0到0之间65535@KevinBoyd好的,检查我最近的答案。它在C语言中对我有效,我认为我的C语言转换是正确的。@richard-j-ross-iii正在试用它@richard-j-ross-iii:编译错误,方法“ToInt32”没有重载,需要1个参数。你可以发布一个例子吗?很好!这是做什么的选择x=>Convert.ToInt32x,16.ToArray;查看文档,您是否建议使用类似以下字符串str=System.Text.Encoding.ASCII.GetStringbuf;string[]sarr=str.Splitnew char[]{',},StringSplitOptions.RemoveEmptyEntries;int[]intar=新的int[sarr.Length];对于int s=0;s