更快的代码从字节数组中删除第一个元素
本文关键字:数组 删除 第一个 元素 字节数 字节 代码 | 更新日期: 2023-09-27 18:04:06
所以我有一个字节数组,我需要从中删除前5个元素。不管怎样,我在网上找了一下,我找不到任何适合我要找的东西。所以我做了这个,它慢得可怕,本质上,无法使用。
private byte[] fR(byte[] tb)
{
string b = "";
byte[] m = new byte[tb.Length - 5];
for (int a = 5; a < tb.Length; a++)
{
b = b + " " + tb.GetValue(a);
}
b = b.Remove(0, 1);
string[] rd = Regex.Split(b, " ");
for (int c = 0; c < rd.Length; c++)
{
byte curr = Convert.ToByte(rd[c]);
m.SetValue(curr, c);
}
return m;
}
我要问的是,是否有一种方法可以使这个更快/改进。或者另一种方法,我可以从字节数组中删除前5个元素。
更方便快捷:
byte[] src = ...;
byte[] dst = new byte[src.Length - 5];
Array.Copy(src, 5, dst, 0, dst.Length);
这是你最快的速度了
如果你正在使用c# 8,你可以使用范围来非常简洁地复制数组的切片:
byte[] src = ...;
byte[] dst = src[5..];
在其他答案中使用的LINQ,更容易理解,是我90%的时间会做的。但是,LINQ有自己的开销,特别是对于这样简单的问题,如果性能很重要,我不会使用它。
您的代码很慢,因为您将字节数组打包成字符串,然后再将其解包。去掉字符串操作,它会更快。
你可以使用Linq:
tb.Skip(5).ToArray();
tb.Skip(5).ToArray()
?