0

对于某些计算,我需要使用浮点数,但我有一个 byte[] 可供我使用,所以我首先这样做:

Array.Copy(byteArray, floatArray, byteArray.Length);

效果很好,我对浮点数进行了一些计算。但现在我需要将其转换回 byteArray。我不能使用下面的代码,它崩溃了,没有给出具体的错误信息。

float[] DiffernetfloatArray= new float[ byteArray];  
Array.Copy(DiffernetfloatArray, byteArray, DiffernetfloatArray.Length);

首先我认为这是不正确的大小,但是我使用的浮点数组,我将大小增加了 500 只是为了测试,仍然给了我同样的错误

有谁知道我该如何解决这个问题?最好用 C# 回答

4

3 回答 3

4

使用 linq 更容易:

var byteArray = floatArray.Select(f => Convert.ToByte(f)).ToArray();
var floatArray = byteArray.Select(b => (float)Convert.ToDouble(b)).ToArray();
于 2012-12-13T15:43:49.350 回答
2

有一个更简单的方法:

System.BitConverter.GetBytes(float)

MSDN

于 2012-12-13T15:44:23.127 回答
-2

一个字节可以转换为一个浮点数,因为它适合该类型,但是通过隐式转换不能完成另一种方式 - 一个浮点数可能太大而无法放入一个字节,因此Array.Copy在这种情况下永远不会工作.

于 2012-12-13T15:41:52.660 回答