pon*_*dle -4 c# algorithm bytearray
所以我有一个字节数组,我需要从中删除前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;
}
Run Code Online (Sandbox Code Playgroud)
我要问的是,是否有办法让这更快/更好.或者我可以从字节数组中删除前5个元素的另一种方法.
Cor*_*son 10
更轻松,更快捷:
byte[] src = ...;
byte[] dst = new byte[src.Length - 5];
Array.Copy(src, 5, dst, 0, dst.Length);
Run Code Online (Sandbox Code Playgroud)
这是你能够获得的最快速度.
LINQ用于其他答案,更容易理解,是我90%的时间都会做的.但是,LINQ有自己的开销,特别是对于像这样的简单问题,如果性能至关重要,我就不会使用它.
您的代码很慢,因为您将字节数组打包成一个字符串,然后将其解包。摆脱字符串操作,它会很快。
您可以使用 Linq:
tb.Skip(5).ToArray();
Run Code Online (Sandbox Code Playgroud)