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

C#开发 作者: Rector 12 次阅读 · 读完约需 1 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

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应用程序编程开发中合并两个或者两个以上的字节数组(byte[])有哪些方法?

发布于: 2019-08-23 15:04:47
分享扩散:

发表评论

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