繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM