我正在尝试找到一种将字节数组分解为两个初始数组的好方法:
我正在使用以下方法组合两个字节数组:
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);