我有一个Floats数组,需要将其转换为字节数组,然后再转换回float [] ...有人可以帮助我正确执行此操作吗?
我正在使用bitConverter类,发现自己在尝试附加结果时陷入困境。
我这样做的原因是可以将运行时值保存到IO流中。如果需要的话,目标存储是Azure Page Blob。只要它的输入与输出匹配,我都不关心它存储在什么字节序中。
static byte[] ConvertFloatToByteArray(float[] floats)
{
byte[] ret = new byte[floats.Length * 4];// a single float is 4 bytes/32 bits
for (int i = 0; i < floats.Length; i++)
{
// todo: stuck...I need to append the results to an offset of ret
ret = BitConverter.GetBytes(floats[i]);
}
return ret;
}
static float[] ConvertByteArrayToFloat(byte[] bytes)
{ //to do }
最佳答案
如果您正在寻找性能,那么可以使用 Buffer.BlockCopy
。美观而简单,并且可能与您获得托管代码一样快。
var floatArray1 = new float[] { 123.45f, 123f, 45f, 1.2f, 34.5f };
// create a byte array and copy the floats into it...
var byteArray = new byte[floatArray1.Length * 4];
Buffer.BlockCopy(floatArray1, 0, byteArray, 0, byteArray.Length);
// create a second float array and copy the bytes into it...
var floatArray2 = new float[byteArray.Length / 4];
Buffer.BlockCopy(byteArray, 0, floatArray2, 0, byteArray.Length);
// do we have the same sequence of floats that we started with?
Console.WriteLine(floatArray1.SequenceEqual(floatArray2)); // True