C#拆分字节数组直到出现错误



我正在根据集合大小将一个longString拆分为一个byteArray。然而,有时会包含额外的数据,然后我需要它停在最后适合的尺寸。我该怎么做?

下面是用于调用该方法的代码。

  List<byte[]> playerssp = splitDataToByteArray(bplayers, 1348);

执行拆分的函数。

    private static List<byte[]> splitDataToByteArray(byte[] longString, int size)
    {
        byte[] source = longString;
        //MessageBox.Show(source.Length.ToString());
        List<byte[]> result = new List<byte[]>();
        for (int i = 0; i < source.Length - 1; i += size)
        {
            byte[] buffer = new byte[size];
            Buffer.BlockCopy(source, i, buffer, 0, size);
            result.Add(buffer);
        }
        return result;
    }

如果使用.Net 6,则可以使用Enumerable.Chunk。您只需要检查最后一个元素的大小是否正确。

private static List<byte[]> splitDataToByteArray(byte[] longString, int size)
{
    var result = longString.Chunk(size).ToList();
    var lastChunck = result[result.Count - 1];
    if(lastChunck.Length != size)
    {
        result.Remove(lastChunck);
    }
    return result;
}

最新更新