在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项):
- Array.Resize // 1728滴答
- Array.Copy // 8个刻度
您不能在C#中截断数组。 它们的长度是固定的。
如果您想要一个可以截断并像数组一样运行的数据结构,则应使用List
。 您可以使用List
方法来实现此目的。