3

我有一个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 似乎在循环中进行转换,而如果可能的话,我会很感激以某种方式一次“块复制”整个数组。

4

1 回答 1

3

你正在寻找Buffer.BlockCopy.

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

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

于 2014-11-20T15:58:53.910 回答