我正在尝试找到一种将字节数组合成两个初始数组的好方法:
我使用以下方法组合两个字节数组:
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 };
}
但这似乎不起作用,对于第一个数组我得到了所有必要的字节,它完美地工作但是对于seconde数组(byte[] s
)
我根本没有得到它。
我通过梳理两个文件的字节来尝试它 file1.txt => containe text =“LM LM LM”; file2.txt =>容器文本=“嘿;
我正在为第一个数组获取file1.txt的完整字节; 但是file2.txt =>我只得到:“L” 我想念一些东西吗?还是错过了什么?
提前感谢。
请注意int first
是第一个数组合的长度
答案 0 :(得分:0)
首先,
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);