c#-将byte []数组转换为长度为一半的short []数组
作者:互联网
我有一个从文件中读取的byte [200],它以little-endian格式表示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或根据需要“手动”执行循环.
标签:short,byte,bitconverter,c,net-4-0 来源: https://codeday.me/bug/20191121/2048617.html