c# 多个不同长度的byte[]数组合并成一个新的byte[]数组
时间: 2023-11-21 13:05:59 浏览: 141
你可以使用System.Linq中的SelectMany方法和Concat方法来合并多个不同长度的byte[]数组。下面是一个示例代码:
```
byte[] arr1 = { 0x01, 0x02, 0x03 };
byte[] arr2 = { 0x04, 0x05 };
byte[] arr3 = { 0x06, 0x07, 0x08, 0x09 };
byte[] arr4 = { 0x0A };
byte[] result = arr1
.Concat(arr2)
.Concat(arr3)
.Concat(arr4)
.ToArray();
// result = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A }
```
在这个示例中,我们将四个不同长度的byte[]数组合并成一个新的byte[]数组。使用SelectMany方法将每个byte[]数组中的元素展平为一个序列,Concat方法将所有序列连接成一个新的序列,最后使用ToArray方法将结果转换为byte[]数组。
相关问题
C# 超大byte[]合并
在C#中,如果你需要将两个或更多的`byte[]`数组合并成一个大的数组,可以使用Array.Copy()方法或者直接赋值操作。以下是两种常见的方法:
1. 使用Array.Copy()方法:
```csharp
byte[] array1 = ...; // 第一个字节数组
byte[] array2 = ...; // 第二个字节数组
int totalLength = array1.Length + array2.Length;
byte[] combinedArray = new byte[totalLength];
Array.Copy(array1, 0, combinedArray, 0, array1.Length);
Array.Copy(array2, 0, combinedArray, array1.Length, array2.Length);
```
2. 直接赋值(适用于长度较小的情况):
```csharp
byte[] array1 = ...;
byte[] array2 = ...;
byte[] combinedArray = new byte[array1.Length + array2.Length];
combinedArray = array1.Concat(array2).ToArray(); // 如果数组长度不大,可以考虑使用Concat()方法简洁处理
```
记得检查数组的实际大小,避免溢出。如果数组非常大,一次性加载到内存可能会导致性能问题,此时可以考虑使用流(Stream)来进行逐块读取和写入。
阅读全文