2008-10-03 26 views
0

我有一个byte数组返回的结果是directx声音捕获,但是对于我的程序的其他部分,我想将结果视为单个()。是否按照最快的方式逐步减少数组项目,还是有一个聪明的方法来做到这一点?初学者:最简单的方法将byte()转换/复制到单个()

即得到它是

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

其产生字节数组的代码,可以CTYPE处理单? (请注意,我不能想出一个办法做到这一点!)

回答

-1

尝试

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

在VB(我认为):

Dim single s; 
s = BitConverter.ToSingle(bytearray, 0); 
+0

这不是他要问的。 此外,VB不使用分号!每当我被迫触摸VB时,我都会犯这个错误;-) – 2008-10-05 11:58:10

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

+0

可能需要添加一个检查以确保bytearray.Length%4 == 0? – 2008-10-05 11:17:11