编程语言
首页 > 编程语言> > c#-将byte []数组转换为长度为一半的short []数组

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