如何使用一系列元素作为目标正确搜索和解析数组

Mic*_*kus 5 .net c# arrays parsing

我有一个字节数组,看起来像这样:

byte[] exampleArray = new byte[] 
                      { 0x01, 0x13, 0x10, 0xe2, 0xb9, 0x13, 0x10, 0x75, 0x3a, 0x13 };
Run Code Online (Sandbox Code Playgroud)

我的最终目标是在看到序列的任何时候将这个数组拆分成子数组{ 0x13, 0x10 }.所以我在示例数组上的期望结果将是:

{ 0x01 }
{ 0xe2, 0xb9 }
{ 0x75, 0x3a, 0x13 }
Run Code Online (Sandbox Code Playgroud)

理想情况下,我还需要知道最终数组{ 0x75, 0x3a, 0x13 }并没有以搜索顺序结束,因此我可以将其作为一个特例来处理.

有关最佳方法的任何想法?

Vil*_*iam 1

List<byte[]> Split(byte[] bArray)
        {
            List<byte[]> result = new List<byte[]>();
            List<byte> tmp = new List<byte>();
            int i, n = bArray.Length;
            for (i = 0; i < n; i++)
            {
                if (bArray[i] == 0x13 && (i + 1 < n && bArray[i + 1] == 0x10))
                {
                    result.Add(tmp.ToArray());
                    tmp.Clear();
                    i++;
                }
                else
                    tmp.Add(bArray[i]);
            }
            if (tmp.Count > 0)
                result.Add(tmp.ToArray());
            return result;
        }
Run Code Online (Sandbox Code Playgroud)

最后一个数组不能以序列结尾,任何分割部分不包含分隔符。只有字节 0x13 可能发生,因此如果这对您很重要,您可以直接检查最后一个子数组的最后一个字节。