【问题标题】:Copy Bytes from a byte array to a specific position of another Byte array in C#将字节从字节数组复制到 C# 中另一个字节数组的特定位置
【发布时间】:2017-05-29 23:03:56
【问题描述】:

我有两个字节数组 - 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,然后复制到它上面(这将是最简单的代码)。 And here you are :-)
  • 您在示例中显示了一个小数组,所以我认为效率不是问题。如果是这样,那么下面 Thomas 给出的解决方案就可以了。但是,如果您使用的是非常大的数组并且您需要它尽可能快,那么可以进一步优化将元素设置为零。
  • @MatthewWatson :是的,我正在处理大型数组。您能解释一下如何优化它吗?
  • @Ani_1317 优化只是将数组中不受Array.Copy()影响的部分设置为0xFF。这只是需要对所涉及的偏移量进行简单计算。

标签: c# arrays bytearray


【解决方案1】:
// Init array2 to 0xff
for (int i = 0; i < array2.Length; i++)
    array2[i] = 0xff;

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

【讨论】:

  • 但是 Array.copy 与 buffer.blockCopy 相比会影响性能,对吧?
  • @Ani_1317,也许……您需要对其进行基准测试以确定。
  • @Ani_1317 我刚刚测试了这个(发布版本)并且速度没有差异。 Array.Copy() 高度优化。
【解决方案2】:

字节[] 数组1; array1.CopyTo(array2,pos)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2019-05-13
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多