我从文件中读取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似乎转换为循环,而我会欣赏某种方式来阻止复制"如果可能的话,整个阵列。
答案 0 :(得分:3)
我认为您正在寻找Buffer.BlockCopy
。
Buffer.BlockCopy(record, 0, target, 0, record.Length);
我相信会保留您所使用的架构的字节顺序 - 因此在某些环境中可能不合适。您可能希望将此抽象为一个方法调用,该调用可以检查(一次)它是否符合您的要求(例如,通过转换{0,1}并查看结果是{1}还是{256})然后使用Buffer.BlockCopy
或使用{#1}手动"如有必要,在循环中。