C#字节数组拆分

时间:2014-06-02 13:02:44

标签: 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}

我如何编程?

1 个答案:

答案 0 :(得分:1)

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

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;
        }