c# - 将 byte[] 数组转换为长度减半的 short[] 数组

标签 c# .net-4.0 byte short bitconverter

我有一个从文件中读取的 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/

相关文章:

c# - 为什么以及如何在Environment.Exit中使用Windows系统错误代码

c# - C# 中的泼溅

c# - 从上下文菜单中获取所选菜单项的名称(或索引),该菜单项是通过绑定(bind)到 ObservableCollection 的 ItemsSource 动态生成的

c# - ASP.Net 网站项目的程序集名称

c# - 条件编译和框架目标

java - 为什么 FileInputStream 中的 read() 返回一个整数?

java - 将字节数组转换为 key

java - List<byte[]> 填充错误

c# - WPF Datepicker 中的日历周

c# - 为什么我的异步回调在同一个线程中运行?