我正在根据集合大小将一个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;
}