0

我有一个作为 directx 声音捕获结果返回的 byte() 数组,但对于我程序的其他部分,我想将结果视为 single()。逐项递减数组是最快的方法还是有一种聪明的方法?

得到它的代码是

CType(Me._applicationBuffer.Read(Me._nextCaptureOffset, GetType(Byte), LockFlag.None, LockSize), Byte())

它创建了字节数组,Ctype 可以处理 single 吗?(注意,我想不出办法!)

4

2 回答 2

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 调用。

于 2008-10-05T11:13:25.270 回答
-1

尝试

float f = BitConverter.ToSingle(bytearray, 0);

在VB中(我认为):

Dim single s;
s = BitConverter.ToSingle(bytearray, 0);
于 2008-10-03T13:09:54.270 回答