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;
}

これを行うための最速の方法(書き込みにかかる時間ではなくパフォーマンスの観点から)は、おそらくCopyMemoryAPI呼び出しを使用することです。

于 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 に答える