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.pswp.cn/pingmian/87408.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring AI 源码

目录 Spring AI 介绍 Spring AI 组件介绍 Spring AI 结构化输出 Srping AI 多模态 Spring AI 本地Ollama Spring AI 源码 Spring AI Advisor机制 Spring AI Tool Calling Spring AI MCP Spring AI RAG Spring AI Agent Spring AI 是一个用于 AI 工程的应用程序框架。 其目标是…

钉钉企业应用开发系列:前端实现自定义右上角菜单(dd.http + Vue3)

本文将围绕“如何在钉钉企业应用中自定义右上角菜单”这一主题进行讲解&#xff0c;并结合现代前端技术栈&#xff08;Vue3 Composition API&#xff09;展示完整实现过程&#xff0c;帮助你快速构建具备原生交互体验的企业应用。一、前置准备1. 注册钉钉开发者账号并创建应用…

STC8H驱动两相四线步进电机

两相步进电机, STC8H系列 用高级PWM实现SPWM细分驱动 /************* 功能说明 ************** 用B组高级PWM细分驱动2相4线小型步进电机, 支持1、2、4、8、16、32、64细分, 比如1.8度的电机4细分到0.45度. 本程序用于演示SPWM多细分直接驱动2相4线小型步进电机…

读书笔记:《DevOps实践指南》

《DevOps实践指南》 美 Gene Kim, Jez Humble, Patrick Debois, John Willis 著&#xff1b;刘征&#xff0c;王磊&#xff0c;马博文&#xff0c;曾朝京 译 个人理解&#xff1a; 向客户交付价值&#xff0c;快速、高效、高质量交付 信息全流程共享、全过程参与、关注软件…

创客匠人视角:创始人 IP 从流量狂欢到价值深耕的蜕变之路

在知识付费行业浪潮中&#xff0c;创客匠人深耕九年&#xff0c;见证了无数 “一夜爆红” 与 “迅速陨落” 的案例。从 “菏泽树哥” 的流量泡沫&#xff0c;到天水麻辣烫的短暂热度&#xff0c;这些现象折射出行业发展的阶段性特征&#xff0c;也促使创始人 IP 打造的底层逻辑…

ArchLinux:别样的btrfs log tree修复大赛(errno=-5 IO failure Failed to recover log tree)

archlinux 简明指南本指南包含 archlinux 安装、配置、维护等&#xff0c;帮助新手快速上手https://arch.icekylin.online/一个月黑风高的上午&#xff1a;美滋滋的打开电脑进grub选择arch启动 欸&#xff01;突然就卡在这里了&#xff0c;系统进了rootfs&#xff0c;并且长按电…

Laravel8中使用phpword生成word文档

最近在开发有关考试试卷相关的内容&#xff0c;需要生成试卷的word文档并下载。 这里用到了phpoffice/phpword插件&#xff0c;这里记录下一些开发过程中注意的点。 1.安装phpoffice/phpword composer require phpoffice/phpword2.准备一个word模板方便向其中写入需要生成的内容…

spring-ai-alibaba官方 Playground 示例

1、Spring AI Alibaba 官方社区开发了一个包含完整 “前端UI后端实现” 的智能体 Playground 示例&#xff0c;示例使用 Spring AI Alibaba 开发&#xff0c;可以体验聊天机器人、多轮对话、图片生成、多模态、工具调用、MCP集成、RAG知识库等所有框架核心能力。 2、界面 3、准…

k8s pod深度理解

一、理论 pod等同于逻辑主机&#xff0c;在它上面运行各种程序&#xff08;容器&#xff09; pod的pause容器作用&#xff0c;pod网络、存储 所有容器的父容器&#xff0c;负责回收僵尸容器&#xff0c;同时它为pod中的容器提供了统一的网络及统一的共享存储。 pod的endpoint…

Android Auto即将带来变革

在2025年谷歌I/O开发者大会上&#xff0c;Android Auto迎来重磅升级。除了集成Gemini智能助手外&#xff0c;本次更新还突破性地为车载信息娱乐系统新增了浏览器和视频应用支持。值得注意的是&#xff0c;Spotify应用也将获得一系列创新功能&#xff0c;进一步丰富用户的驾驶体…

Jenkins 与 GitLab CI/CD 的核心对比

Jenkins 与 GitLab CI/CD 的核心对比及中小企业选型建议如下&#xff1a; &#x1f504; ‌核心功能对比‌ ‌维度‌‌Jenkins‌‌GitLab CI/CD‌‌集成性‌需手动配置插件对接代码仓库&#xff08;如 GitLab&#xff09;原生深度集成 GitLab 仓库&#xff0c;实现代码-CI/CD …

每日问题总结

fairy GUI适配相关问题 为什么自己适配好了但是打包发布到unity没有UI显示呢&#xff1f; 原因可能是你发布的组件和图片不在同一个包下面&#xff0c;因为fairyGUI的分包限制问题&#xff0c;每一个包限制在2048M大小。不能超过这个大小&#xff0c;所以说&#xff0c;有可能…

embbding you should know

embedding&#xff1a;就是将词向量或者图向量 采用权重升维度&#xff0c;更好的去表达这个特征&#xff1b;nn.Embedding 是 PyTorch 中的 查表式嵌入层&#xff08;lookup‐table&#xff09;&#xff0c;用于将离散的整数索引&#xff08;如词 ID、实体 ID、离散特征类别等…

【JS-6.2-模板字符串】ES6 模板字符串:现代JavaScript的字符串处理利器

在ES6(ECMAScript 2015)引入的所有新特性中&#xff0c;模板字符串(Template Literals)可能是最直观、最容易被开发者接受并广泛使用的特性之一。它彻底改变了我们在JavaScript中处理字符串的方式&#xff0c;提供了更强大、更灵活的字符串操作能力。本文将深入探讨模板字符串的…

百度捂紧“钱袋子”

何俊杰依然是李彦宏手里最能用、也最信得过的人之一。 作者|景行 编辑|文昌龙 李彦宏的OKR又兑现了一条。年初他在组织建设的OKR里放话“组织负责人进一步年轻化&#xff0c;提倡赛马”&#xff0c;如今“赛马”跑来了百度新CFO。 7月1日&#xff0c;李彦宏发全员邮件&#…

刷卡登入数据获取

1.WPF刷卡登入数据获取&#xff0c;防止用户手动输入 //WPF输入框信息及触发命令<StackPanel Orientation"Vertical" VerticalAlignment"Center" Margin"0 30" Visibility"{Binding LoginMode,Converter{StaticResource loginModeWit…

DPO训练中的logit scale 与 reward shift 偏置问题以及可能的解决方案

Logit Scale Bias&#xff08;Logit 放缩偏置&#xff09; 定义&#xff1a; Logit scale 偏置指的是&#xff0c;不同模型&#xff08;如 Actor 与 Reference&#xff09;之间输出的 logit 的数量级&#xff08;scale&#xff09;不一致&#xff0c;导致 log-prob 或 log-rati…

再见 RAG?Gemini 2.0 Flash 刚刚 “杀死” 了它!

最近谷歌发布了 Gemini 2.0 Flash&#xff0c;说实话&#xff0c;它可能是目前市面上性价比最高的 AI 模型了。 许多人写过关于 RAG 可能不再需要的文章&#xff0c;也可以看到人们在讨论它。有些人理解&#xff0c;有些人不理解&#xff0c;还有些人非常担心。 所以让我们解…

PDF的图片文字识别工具

PDF的图片文字识别工具是一款完全免费的PDF OCR识别软件&#xff0c;软件支持“单文件选择、多文件批量选择、文字预处理、结果后处理、Word导出”等功能。 选择你想要识别的PDF&#xff0c;软件就自动的开始识别PDF内容&#xff0c;识别后的文字在软件的下方有内容预览。 注意…

SQLite不够用?视频汇聚系统EasyCVR切换MySQL数据库的关键参数怎么调?

一、为什么需要将EasyCVR从SQLite切换到MySQL&#xff1f; EasyCVR默认使用的SQLite数据库属于轻量级嵌入式数据库&#xff0c;适合小型项目或设备量较少的场景&#xff08;通常建议设备通道数≤200&#xff09;。当设备通道数超过200或需要支持高并发访问、海量数据存储时&am…