将byte []数组转换为short []数组,长度减半

时间:2014-11-20 15:56:55

标签: c# .net-4.0 byte short bitconverter

我从文件中读取byte[200],表示小端格式的short[100]。这就是我读它的方式:

using (FileStream fs = new FileStream(_path, FileMode.Open, FileAccess.Read))
{
    //fs.Seek(...)
    byte[] record = new byte[200];
    fs.Read(record, 0, record.Length);

    short[] target = new short[100];
    // magic operation that fills target array
}

我不知道该放入什么"魔术操作"。我已经阅读了BitConverter,但它似乎没有BitConverter.ToShort操作。无论如何,BitConverter似乎转换为循环,而我会欣赏某种方式来阻止复制"如果可能的话,整个阵列。

1 个答案:

答案 0 :(得分:3)

认为您正在寻找Buffer.BlockCopy

Buffer.BlockCopy(record, 0, target, 0, record.Length);

相信会保留您所使用的架构的字节顺序 - 因此在某些环境中可能不合适。您可能希望将此抽象为一个方法调用,该调用可以检查(一次)它是否符合您的要求(例如,通过转换{0,1}并查看结果是{1}还是{256})然后使用Buffer.BlockCopy或使用{#1}手动"如有必要,在循环中。