C#,如何通过分隔符拆分字节数组?

时间:2012-02-25 16:31:15

标签: c# split bytearray delimiter

我有一个字节数组,其中包含由','分隔的2字节十六进制数字的集合。怎么可以用','拆分,然后将数字转换为整数?

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

编辑: 实施例

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

70,67,65,57,44,55,68,66,53,44 ......

这相当于十六进制

FCA9和7DB5

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

这应该有用,虽然我的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;
    }
}