【发布时间】:2011-08-24 03:15:22
【问题描述】:
我有一个字节数组,实际上是来自声卡的 16 位样本。所以 1000 字节实际上代表 500 个 Short(16 位值)。
目前我正在像这样转换它们:
byte [] inputData = new byte[1000];
short [] convertedData = new short[500];
Buffer.BlockCopy(inputData, 0, convertedData , 0, 1000);
它工作正常而且速度非常快,因为它是一个低级字节副本。
但是有没有办法在没有副本的情况下做到这一点?即告诉 C# 将此内存区域视为 500 个短裤而不是 1000 个字节的数组?我知道在 C/C++ 中我可以只转换指针,它会起作用。
这个副本发生在一个紧密的循环中,每秒最多 5000 次,所以如果我可以删除这个副本,那将是值得的。
【问题讨论】: