我有一个浮点数组需要转换为字节数组并返回浮点[]...任何人都可以帮助我正确地执行此操作吗?
我正在使用 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 http://msdn.microsoft.com/en-us/library/system.buffer.blockcopy.aspx。漂亮又简单,而且可能与您在托管代码中获得的速度一样快。
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)