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

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.lqws.cn/news/570079.html

相关文章:

  • linux运维学习第10周
  • 手机射频功放测试学习(二)——手机线性功放的静态电流和小信号(S-Parameter)测试
  • 计算机组成原理与体系结构-实验二 ALU(Proteus 8.15)
  • 电子计数跳绳原型
  • 数据结构 哈希表、栈的应用与链式队列 6.29 (尾)
  • Hive SQL 快速入门指南
  • GO 语言学习 之 数组和切片
  • Docker镜像制作案例
  • MATLAB中formattedDisplayText函数用法
  • 用户行为序列建模(篇八)-【阿里】DIEN
  • 由dbc文件解析can消息(一)
  • 信创背景下应用软件迁移解析:从政策解读到落地实践方案
  • 使用Xshell学习Linux的一些基本操作
  • JavaScript基础-常见网页特效案例
  • NumPy 统计函数与矩阵运算指南
  • 【大语言模型入门】—— 浅析LLM基座—Transformer原理
  • FPGA实现CameraLink视频解码,基于Xilinx ISERDES2原语,提供4套工程源码和技术支持
  • 【系统分析师】2021年真题:案例分析-答案及详解
  • SpringCloud系列(41)--SpringCloud Config分布式配置中心简介
  • 《从Backprop到Diffusion:深度学习的算法进化树全景图》
  • C++洛谷P1001 A+B Problem
  • 7类茶叶嫩芽图像分类数据集
  • 低延时高速数据链技术在无人平台(无人机无人船无人车)中的关键作用与应用
  • 2025年前端最新面试题及答案
  • S7-1200 CPU 与 S7-200 SMART S7通信(S7-1200 作为服务器)
  • 【算法设计与分析】(三)二分搜索技术与大整数乘法
  • Spring Cloud:分布式事务管理与数据一致性解决方案
  • stm32之普通定时器
  • C++并发编程-5.C++ 线程安全的单例模式演变
  • 从代码学习深度学习 - 自然语言推断:使用注意力 PyTorch版