我有一个字节数组,实际上是来自声卡的16位样本。因此,1000个字节实际上代表500个Short(16位值)。
目前,我是这样转换它们的:
byte [] inputData = new byte[1000];
short [] convertedData = new short[500];
Buffer.BlockCopy(inputData, 0, convertedData , 0, 1000);
它可以正常工作,因为它是一个低级别的字节复制,所以速度相当快。
但是,有没有一种方法可以在不进行复制的情况下完成呢?也就是说,告诉C#将这段内存区域视为500个shorts的数组,而不是1000个字节?我知道在C/C++中,我可以直接将指针转换类型即可实现。
这个复制操作在一个紧密的循环中发生,每秒高达5000次,如果我能够避免这个复制,那么它将是值得的。