在C#中,我如何截断byte 数组

我有一个大小的byte []数组,我想将它截断为一个较小的数组?

我只是想结束。

数组在C#(.NET)中是固定大小的。

您必须将内容复制到新内容。

byte[] sourceArray = ... byte[] truncArray = new byte[10]; Array.Copy(sourceArray , truncArray , truncArray.Length); 

您可以使用Array.Resize ,但所有这一切确实是制作原始数组的截断副本,然后用新的数组替换原始数组。

  private static void Truncate() { byte[] longArray = new byte[] {1,2,3,4,5,6,7,8,9,10}; Array.Resize(ref longArray, 5);//longArray = {1,2,3,4,5} //if you like linq byte[] shortArray = longArray.Take(5).ToArray(); } 

我通常创建一个扩展方法:

  public static byte[] SubByteArray(this byte[] byteArray, int len) { byte[] tmp = new byte[len]; Array.Copy(byteArray, tmp, len); return tmp; } 

可以像这样轻松调用字节数组:

 buffer.SubByteArray(len) 

顺便说一句,Array.Resize方法需要更多的时间来完成。 在我的简单情况下,我只需要调整字节数组(~8,000项到~20项):

  1. Array.Resize // 1728滴答
  2. Array.Copy // 8个刻度

您不能在C#中截断数组。 它们的长度是固定的。

如果您想要一个可以截断并像数组一样运行的数据结构,则应使用List 。 您可以使用List.RemoveRange方法来实现此目的。