在用C#进行软件开发的时候,需要用到字节数组和浮点数组转换功能。
其中字节数组是小端编码,为了便于以后提高,先整理记录如下:
byte[] data= ...; //字节数组, 从外部获取
float[] floatArr = new float[data.Length / 4];
//第一种方法,字节数组转换类转换,最容易想到和处理
for (int i = 0; i < floatArr.Length; i++)
{
floatArr[i] = BitConverter.ToSingle(data, i * 4);
}
//第二种方法,缓存复制--最为简洁
Buffer.BlockCopy(data, 0, floatArr, 0, data.Length);
//第三种方法,字节转换处理方法,速度最快
for (int i = 0; i < floatArr.Length; i++)
{
floatArr[i] = data[i*4] | data[i *4+ 1] << 8 | data[i*4+2]<<16|data[i*4+3]<<24;
}
//第四种方法,不安全字节,首先,需要调整项目属性,勾选上允许不安全代码
unsafe
{
fixed (byte* pBuffer = data)
{
float* pSample = (float*)pBuffer;
// now we can access samples via pSample e.g.:
for (int i = 0; i < floatArr.Length; i++)
{
floatArr[i] = pSample[i];
}
}
}