浮点数组类型的变量引用的值如何具有字节数组类型
本文关键字:数组 类型 何具 字节 字节数 引用 变量 | 更新日期: 2023-09-27 18:00:23
NAudio库提供以下接口。
interface ISampleProvider
{
WaveFormat WaveFormat { get; }
int Read(float[] buffer, int offset, int count);
}
我制作了一个实现这个接口的类。在我实现Read
的过程中,我得到了非常奇怪的行为。buffer
参数的类型显示为byte[]
,即使该变量被声明为float[]
。
int Read(float[] buffer, int offset, int count)
{
//The type of buffer is System.Byte[]!
var type = buffer.GetType();
...
}
这怎么可能?
我不知道NAudio库是如何调用我的Read
实现的,但我猜它可能是通过一些不安全的互操作实现的。
您看到了WaveBuffer
类的作用,这是NAudio欺骗.NET的一种方式,让我们在不复制数据或引脚缓冲区的情况下将byte[]
"强制转换"到float[]
中。
阅读更多信息:
- WaveBuffer-将字节数组转换为浮点数组
- 如何在C中将byte[]转换为short[]或float[]数组#