我有一个作为 directx 声音捕获结果返回的 byte() 数组,但对于我程序的其他部分,我想将结果视为 single()。逐项递减数组是最快的方法还是有一种聪明的方法?
得到它的代码是
CType(Me._applicationBuffer.Read(Me._nextCaptureOffset, GetType(Byte), LockFlag.None, LockSize), Byte())
它创建了字节数组,Ctype 可以处理 single 吗?(注意,我想不出办法!)
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);