在C#中将字节数组的字节复制到另一个字节数组的特定位置

3
我有两个字节数组 - array1 和 array2。 我的目的是根据每个数组的起始索引将字节从第一个数组复制到第二个数组,并使用特定的字节填充未填充的字节。
byte[] array1 = new byte[5]
The data is as follows: 11,22,00,33,44; 

byte[] array2 = new byte[10];     

我需要将数组array1中的字节复制到数组array2中。数据需要从array2的第3个位置开始复制,并用值ff填充其余的空位。 即我的array2中的结果应该是{ff,ff,ff,11,22,00,33,44,ff,ff}。
任何帮助都将不胜感激。
提前致谢!

有一个Array.Copy重载函数,可以让你控制复制操作的起始索引。因此,创建一个数组,将所有元素初始化为ff,然后在其上进行复制(这将使代码最简单)。就是这样 :-) - Adam Houldsworth
你在示例中展示了一个小数组,所以我认为效率不是问题。如果是这样,那么Thomas提供的解决方案就可以了。然而,如果你正在使用非常大的数组,并且需要尽可能快地完成操作,那么将元素设置为零的过程可以进一步优化。 - Matthew Watson
@MatthewWatson:是的,我正在处理大型数组。您能否请解释一下如何进行优化? - Ani_1317
@Ani_1317 优化只需将Array.Copy()未受影响的数组部分设置为0xFF。这只需要简单计算所涉及的偏移量即可。 - Matthew Watson
2个回答

6
// Init array2 to 0xff
for (int i = 0; i < array2.Length; i++)
    array2[i] = 0xff;

// Copy
Array.Copy(array1, 0, array2, 3, array2.Length);

但是与缓冲区块拷贝相比,数组复制会影响性能,对吗? - Ani_1317
@Ani_1317,也许你需要进行基准测试以确保。 - Thomas Levesque
@Ani_1317 我刚刚测试了一下(发布版本),速度没有任何差别。Array.Copy()已经被高度优化了。 - Matthew Watson

0

byte[] array1; array1.CopyTo(array2,pos)

字节组[] 数组1; 数组1.CopyTo(数组2,位置)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接