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 }并没有以搜索顺序结束,因此我可以将其作为一个特例来处理.
有关最佳方法的任何想法?
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 可能发生,因此如果这对您很重要,您可以直接检查最后一个子数组的最后一个字节。
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |