[英]Convert byte[] array to a short[] array with half the length
我有一个从文件中读取的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似乎在一个循环中进行转换,而如果可能的话,我希望能够立即“阻止复制”整个数组。
我想你正在寻找Buffer.BlockCopy
。
Buffer.BlockCopy(record, 0, target, 0, record.Length);
我相信这将保留您所使用的架构的字节顺序 - 因此在某些环境中可能不合适。 您可能希望将此抽象为一个方法调用,该调用可以检查(一次)它是否符合您的要求(例如,通过转换{0,1}并查看结果是{1}还是{256})然后如果需要,使用Buffer.BlockCopy
或在循环中“手动”执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.