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

C#中字节数组(byte[])末尾继续添加字节的示例

方法一:使用List

使用List可以很容易地在末尾添加字节,然后如果需要,可以将其转换回byte[]。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;namespace WindowsFormsApplication1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}List<byte> byteList = new List<byte>();private void byteAddFun(){byteList.Clear();// 添加字节  byteList.Add(0x01);byteList.Add(0x02);byteList.Add(0x03);// 如果需要,转换为byte[]  byte[] byteArray = byteList.ToArray();foreach (byte b in byteArray)textBox1.Text += b.ToString("X2") + " ";// 添加字节  byteList.Add(0x05);byteList.Add(0x06);byteList.Add(0x07);// 如果需要,转换为byte[]  byte[] byteArray2 = byteList.ToArray();foreach (byte b in byteArray2)textBox1.Text += b.ToString("X2") + " ";}private void byteAddFun2(){byteList.Clear();// 添加字节  byteList.Add(0x05);byteList.Add(0x06);byteList.Add(0x07);// 如果需要,转换为byte[]  byte[] byteArray2 = byteList.ToArray();foreach (byte b in byteArray2)textBox1.Text += b.ToString("X2") + " ";}private void button1_Click(object sender, EventArgs e){textBox1.Text = null;byteAddFun();}private void button2_Click(object sender, EventArgs e){textBox1.Text = null;byteAddFun2();}}
}

在这里插入图片描述
在这里插入图片描述

方法二:使用Array.Resize或新的Array.Copy

如果已经有一个byte[]并希望添加更多字节,则可以使用Array.Resize来重新调整数组的大小,但请注意这可能会导致性能问题,因为每次添加字节时都需要重新分配整个数组。
或者也可以创建一个新的更大的数组,然后使用Array.Copy将旧数组的内容复制到新数组中,并在新数组的末尾添加新的字节。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;namespace WindowsFormsApplication1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void byteAddFun(){byte[] byteArray = new byte[] { 0x01, 0x02, 0x03 };// 假设我们要添加一个新的字节 0x04  byte newByte = 0x04;// 创建一个新的更大的数组  byte[] newByteArray = new byte[byteArray.Length + 1];// 复制旧数组的内容到新数组  Array.Copy(byteArray, 0, newByteArray, 0, byteArray.Length);// 在新数组的末尾添加新的字节  newByteArray[newByteArray.Length - 1] = newByte;// 现在 newByteArray 包含 [0x01, 0x02, 0x03, 0x04]foreach (byte b in newByteArray)textBox1.Text += b.ToString("X2") + " ";}private void button1_Click(object sender, EventArgs e){textBox1.Text = null;byteAddFun();}private void button2_Click(object sender, EventArgs e){textBox1.Text = null;byteAddFun();}}
}

三、注意

如果需要频繁地向数组添加字节,并且事先不知道最终的大小,那么使用List通常是一个更好的选择,因为它可以自动处理重新分配的问题,并且通常具有更好的性能。但是,如果已经知道最终的大小,或者只是偶尔需要添加字节,那么使用Array.Resize或Array.Copy可能是可以接受的。

http://www.lryc.cn/news/362896.html

相关文章:

  • Socket编程学习笔记之TCP与UDP
  • JavaScript第九讲BOM编程的练习题
  • JavaScript 中创建函数的多种方式
  • 对称二叉树[简单]
  • 判断GIF类型并使用ImageDecoder解析GIF图
  • 数组对象数据修改后页面没有更新,无法进行编辑,校验失效问题
  • 什么是低代码?有什么特点?
  • Kafka 消息保留时长由 24 小时变更为 72 小时的影响分析
  • MySQL A表的字段值更新为B表的字段值
  • TCP 建链(三次握手)和断链(四次握手)
  • SpringBoot集成JOOQ加Mybatis-plus使用@Slf4j日志
  • 浅谈JavaScript中的对象赋值
  • Java面试题-集合
  • 从当当网批量获取图书信息
  • python爬虫之JS逆向——网页数据解析
  • VL53L4CX TOF开发(2)----修改测距范围及测量频率
  • C++之noexcept
  • Kafka之Broker原理
  • RabbitMQ docker安装及使用
  • 篇3:Mapbox Style Specification
  • C#WPF数字大屏项目实战11--质量控制
  • 第九十七节 Java面向对象设计 - Java Object.Finalize方法
  • 【scikit-learn009】异常检测系列:单类支持向量机(OC-SVM)实战总结(看这篇就够了,已更新)
  • 网络管理与运维
  • 数据库查询字段在哪个数据表中
  • 第 400 场 LeetCode 周赛题解
  • 数据结构与算法之Floyd弗洛伊德算法求最短路径
  • Ubuntu系统设置Redis与MySQL登录密码
  • 数据库连接池的概念和原理
  • 国内常用的编程博客网址:技术资源与学习平台