gpt4 book ai didi

c# - 如何使用元素序列作为目标正确搜索和解析数组

转载 作者:太空狗 更新时间:2023-10-29 23:39:43 25 4
gpt4 key购买 nike

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

byte[] exampleArray = new byte[] 
{ 0x01, 0x13, 0x10, 0xe2, 0xb9, 0x13, 0x10, 0x75, 0x3a, 0x13 };

我的最终目标是在我看到序列 { 0x13, 0x10 } 时将此数组拆分为子数组。所以我对示例数组的期望结果是:

{ 0x01 }
{ 0xe2, 0xb9 }
{ 0x75, 0x3a, 0x13 }

理想情况下,我还需要知道最终数组 { 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;
}

最后一个数组不能以顺序结束,任何拆分的部分都没有分隔符。只有字节 0x13 可能发生,所以如果这对你很重要,你可以检查最后一个子数组的最后一个字节。

关于c# - 如何使用元素序列作为目标正确搜索和解析数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16281732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com