首页 / C#开发 / 正文

C#/.NET应用程序编程开发中合并两个或者两个以上的字节数组(byte[])有哪些方法?

3933 1 发布于: 2019-08-23 读完约需3分钟

问题描述

C#/.NET应用程序编程开发中,当前有三个字节数组(byte[]),现需要将其合并成一个字节数组,C#有哪些实现方式呢?

方案一

使用System.Buffer.BlockCopy()方法合并多个字节数组,如下:

byte[] rv = new byte[a1.Length + a2.Length + a3.Length];
System.Buffer.BlockCopy(a1, 0, rv, 0, a1.Length);
System.Buffer.BlockCopy(a2, 0, rv, a1.Length, a2.Length);
System.Buffer.BlockCopy(a3, 0, rv, a1.Length + a2.Length, a3.Length);

方案二

使用LINQ的Concat()方法合并字节数组,如下:

IEnumerable<byte> rv = a1.Concat(a2).Concat(a3);

方案三

如果是不确定的个数的字节数组,则可以封闭成通用的合并的方法,如下:

private byte[] Combine(params byte[][] arrays)
{
    byte[] rv = new byte[arrays.Sum(a => a.Length)];
    int offset = 0;
    foreach (byte[] array in arrays) {
        System.Buffer.BlockCopy(array, 0, rv, offset, array.Length);
        offset += array.Length;
    }
    return rv;
}

方案四

使用LINQ的SelectMany()方法可以让实现方式更简洁,如下:

public static byte[] ConcatByteArrays(params byte[][]  arrays)
{
    return arrays.SelectMany(x => x).ToArray();
}

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: C#/.NET应用程序编程开发中如何实现小数的4舍5入并保留的两位有效小数位?

下一篇: C#/.NET应用程序编程开发中根据查询条件动态创建LINQ的Where查询表达式的实现方案

本文永久链接码友网 » C#/.NET应用程序编程开发中合并两个或者两个以上的字节数组(byte[])有哪些方法?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册