c# 组合/取消组合两个字节数组



我正在尝试找到一种将字节数组分解为两个初始数组的好方法:

我正在使用以下方法组合两个字节数组:

public static  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;
}

并使用以下命令将它们分解:

public static object[] DeCombine(byte[] array, int first)
{
byte[] f = new byte[first];
byte[] s = new byte[(array.Length - first)];
Array.Copy(array, f, array.Length - (array.Length - first));
Array.Copy(array, s, array.Length - first);
return new[] { f, s };
}

但这似乎不起作用,对于第一个数组,我获得了所有必要的字节,它工作得很好,但对于第二个数组(byte[] s) 我完全不明白.

我通过梳理两个文件的字节来尝试 file1.txt =>包含文本 = "LM LM LM"; file2.txt =>包含文本 ="嘿;

我正在为第一个数组获取文件的完整字节1.txt; 但是文件2.txt =>我只得到:"L" 我错过了理解什么吗?还是错过了什么?

提前谢谢.

请注意,int first是第一个数组组合的长度

首先,

Array.Copy(array, f, array.Length - (array.Length - first));

相当于

Array.Copy(array, f, first);

第二

Array.Copy(array, s, array.Length - first);

开始从 0 索引复制array。你想要的是

Array.Copy(array,first, s, 0, array.Length - first);

最新更新