C#字节数组拆分

C#字节数组拆分,c#,arrays,algorithm,split,byte,C#,Arrays,Algorithm,Split,Byte,我有一个问题 我想拆分一个数组 像这样 public static byte[][] Split(byte[] arr, byte keyword) { } byte[] arr = {0x11, 0x22, 0x33, 0x00, 0x11, 0x22, 0x00, 0x11}; var result = Split(arr, 0x00); 结果: {0x11, 0x22, 0x33} {0x11, 0x22} {0x11} 如何编写此程序?这是一个快速解决方案。我希望这能有所帮助 pu

我有一个问题

我想拆分一个数组

像这样

public static byte[][] Split(byte[] arr, byte keyword)
{
}

byte[] arr = {0x11, 0x22, 0x33, 0x00, 0x11, 0x22, 0x00, 0x11};
var result = Split(arr, 0x00);
结果:

{0x11, 0x22, 0x33}
{0x11, 0x22}
{0x11}

如何编写此程序?

这是一个快速解决方案。我希望这能有所帮助

public static byte[][] Split(byte[] arr, byte keyword)
        {
            var result = new List<List<byte>>();

            var piece = new List<byte>();

            foreach (var b in arr)
            {
                if (b != keyword)
                {
                    piece.Add(b);
                }
                else
                {
                    result.Add(piece);
                    piece = new List<byte>();
                }
            }

            result.Add(piece);

            return ToArrayOfArray(result);
        }

public static T[][] ToArrayOfArray<T>(List<List<T>> list)
        {
            var res = new T[list.Count][];

            for (int i = 0; i < list.Count; i++)
            {
                res[i] = list[i].ToArray();
            }

            return res;
        }
公共静态字节[][]拆分(字节[]arr,字节关键字)
{
var result=新列表();
var piece=新列表();
foreach(arr中的var b)
{
if(b!=关键字)
{
加入(b);
}
其他的
{
结果:增加(件);
工件=新列表();
}
}
结果:增加(件);
返回ArrayOfarray(结果);
}
公共静态T[][]到ArrayOfarray(列表)
{
var res=newt[list.Count][];
for(int i=0;i
如果有两个(或更多)连续零值,您希望发生什么?一个空数组还是完全跳过它?嗯,你需要扫描原始输入。。。您可能希望在方法中创建一个
列表
,以便在执行时累积数组。。。到目前为止,您尝试了什么?我是否应该显示对MoreLINQ的引用,它已经实现了for
IEnumerable
?用法是
arr.Split(b=>b==0x00)
生成完全相同的输出。谢谢。但我必须只使用.net2.0,我认为在.net2.0中不支持Select方法…您可以使用一个使用列表列表返回数组的方法重构这部分代码。这很简单。然后就有了完整的实现。