由于directx声音捕获,我返回了一个byte()数组,但对于程序的其他部分,我希望将结果视为single()。逐项滚动数组是最快的方法,还是有一种聪明的方法?
得到它的代码是
CType(Me._applicationBuffer.Read(Me._nextCaptureOffset, GetType(Byte), LockFlag.None, LockSize), Byte())
哪个创建了字节数组,Ctype能处理单个吗?(注意,我想不出办法!)
public float[] ByteArrayToFloatArray(byte[] byteArray)
{
float[] floatArray = new float[byteArray.Length / 4];
for (int i = 0; i < floatArray.Length; i++)
{
floatArray[i] = BitConverter.ToSingle(byteArray, i * 4);
}
return floatArray;
}
实现这一点的最快方法(就性能而言,而不是写入所需的时间)可能是使用CopyMemory API调用。
尝试
float f = BitConverter.ToSingle(bytearray, 0);
在VB中(我认为):
Dim single s;
s = BitConverter.ToSingle(bytearray, 0);