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

时间:2008-10-03 13:06:57

标签: vb.net byte casting ctype

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

获取它的代码是

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

创建字节数组,Ctype可以处理单个吗? (注意,我无法想出办法!)

2 个答案:

答案 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);