C#,如何用分隔符分割字节数组

本文关键字:字节 字节数 数组 分割 分隔符 何用 | 更新日期: 2023-09-27 18:25:51

我有一个字节数组,它包含由','分隔的2字节十六进制数字的集合。它怎么能被","分割,然后把数字转换成整数?

字节数组包含ascii格式的值。

编辑:示例

我的有效字符范围是0到9、A到F和逗号所以我的流应该看起来像

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

这相当于十六进制

FCA9和7DB5

C#,如何用分隔符分割字节数组

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

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

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

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

这应该可以工作,尽管我的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;
    }
}