我有一个从文件中读取的 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 似乎在循环中进行转换,而如果可能的话,我希望有一些方法可以一次“ block 复制”整个数组。
最佳答案
我认为您正在寻找Buffer.BlockCopy
.
Buffer.BlockCopy(record, 0, target, 0, record.Length);
我相信这将保留您所在架构的字节序 - 因此在某些环境中它可能不合适。您可能希望将其抽象为一个方法调用,该方法调用可以检查(一次)它是否执行您想要的操作(例如,通过转换 {0, 1} 并查看结果是 {1} 还是 {256}),然后使用 Buffer.BlockCopy
或在必要时在循环中“手动”执行。
关于c# - 将 byte[] 数组转换为长度减半的 short[] 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27043925/