我有一个byte()数组作为directx声音捕获的结果返回,但对于我的程序的其他部分,我想将结果视为single()。是以最快的方式逐项推动数组,还是有一种聪明的方法呢?
获取它的代码是
CType(Me._applicationBuffer.Read(Me._nextCaptureOffset, GetType(Byte), LockFlag.None, LockSize), Byte())
创建字节数组,Ctype可以处理单个吗? (注意,我无法想出办法!)
答案 0 :(得分:1)
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调用。
答案 1 :(得分:-1)
尝试
float f = BitConverter.ToSingle(bytearray, 0);
在VB中(我认为):
Dim single s;
s = BitConverter.ToSingle(bytearray, 0);