当前位置: 首页 > ai >正文

C# 合并两个byte数组的几种方法

1. 使用 Array.Copy 方法(高效推荐)

byte[] array1 = { 1, 2, 3 };
byte[] array2 = { 4, 5, 6 };byte[] combined = new byte[array1.Length + array2.Length];
Array.Copy(array1, 0, combined, 0, array1.Length);
Array.Copy(array2, 0, combined, array1.Length, array2.Length);

2. 使用 Buffer.BlockCopy 方法(性能最优)

byte[] array1 = { 1, 2, 3 };
byte[] array2 = { 4, 5, 6 };byte[] combined = new byte[array1.Length + array2.Length];
Buffer.BlockCopy(array1, 0, combined, 0, array1.Length);
Buffer.BlockCopy(array2, 0, combined, array1.Length, array2.Length);

3. 使用 LINQ 的 Concat 方法(代码简洁)

using System.Linq;byte[] array1 = { 1, 2, 3 };
byte[] array2 = { 4, 5, 6 };byte[] combined = array1.Concat(array2).ToArray();

4. 使用 MemoryStream(适合连续合并多个数组)

using System.IO;byte[] array1 = { 1, 2, 3 };
byte[] array2 = { 4, 5, 6 };using (MemoryStream ms = new MemoryStream())
{ms.Write(array1, 0, array1.Length);ms.Write(array2, 0, array2.Length);byte[] combined = ms.ToArray();
}

5. 使用 Span<T>(.NET Core 2.1+ 高性能方案)

byte[] array1 = { 1, 2, 3 };
byte[] array2 = { 4, 5, 6 };byte[] combined = new byte[array1.Length + array2.Length];
array1.AsSpan().CopyTo(combined.AsSpan());
array2.AsSpan().CopyTo(combined.AsSpan(array1.Length));

性能比较

对于大数据量合并的性能排序(从高到低):

  1. Buffer.BlockCopy / Span<T>.CopyTo
  2. Array.Copy
  3. MemoryStream
  4. LINQ Concat

选择哪种方法取决于你的具体需求:

  • 追求最高性能:使用 Buffer.BlockCopy 或 Span<T>
  • 代码简洁优先:使用 LINQ
  • 需要合并多个数组:使用 MemoryStream
http://www.xdnf.cn/news/14697.html

相关文章:

  • 零基础学习RabbitMQ(5)--工作模式(1)
  • C/C++数据结构之动态数组
  • ali PaddleNLP docker
  • vue-31(Nuxt.js 中的数据获取:asyncData和fetch)
  • XIP (eXecute In Place)
  • Spring AI Alibaba Nacos 集成实践
  • 【C++ 基础】 C++ 与 C 语言差异面试题(附大厂真题解析)
  • 【智能协同云图库】智能协同云图库第三弹:基于腾讯云 COS 对象存储—开发图片模块
  • 【Linux高级全栈开发】2.3.1 协程设计原理与汇编实现2.3.2 协程调度器实现与性能测试
  • 原型设计Axure RP网盘资源下载与安装教程共享
  • 【记录】服务器多用户共享Conda环境——Ubuntu24.04
  • 进阶向:Django入门,从零开始构建一个Web应用
  • Word之电子章制作——1
  • kubectl exec 原理
  • 力扣第73题-矩阵置零
  • Flutter基础(Children|​​Actions|Container|decoration|child)
  • git使用详解和示例
  • 【区块链】区块链交易(Transaction)之nonce
  • 【Docker基础】Docker容器管理:docker stats及其参数详解
  • C++共享型智能指针std::shared_ptr使用介绍
  • 机器学习配置环境
  • 某音Web端消息体ProtoBuf结构解析
  • 力扣 刷题(第七十一天)
  • 第七章——一元函数微分学的物理应用
  • 多表连接查询:语法、注意事项与最佳实践
  • 如何快速学习一门新编程语言
  • 【Linux】理解进程状态与优先级:操作系统中的调度原理
  • STM32HAL 旋转编码器教程
  • 自定义上下两个方向的柱形图
  • Vue.js 中的数字格式化组件:`FormattedNumber`