c#组合/解组两个字节的数组

时间:2017-05-28 22:47:33

标签: 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 };
    }

但这似乎不起作用,对于第一个数组我得到了所有必要的字节,它完美地工作但是对于seconde数组(byte[] s) 我根本没有得到它。

我通过梳理两个文件的字节来尝试它 file1.txt => containe text =“LM LM LM”; file2.txt =>容器文本=“嘿;

我正在为第一个数组获取file1.txt的完整字节; 但是file2.txt =>我只得到:“L” 我想念一些东西吗?还是错过了什么?

提前感谢。

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

1 个答案:

答案 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);