初学者:将byte()强制转换/复制为single()的最快方法



由于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);

相关内容

  • 没有找到相关文章

最新更新