要浮动的字节数组

Byte array to float

我正在尝试将浮点数转换为长度为 4 的字节数组,然后再返回。但是我好像没用。

这是我所做的:

byte[] b = BitConverter.GetBytes(90);
float fb = BitConverter.ToSingle(b, 0);

我预计 fb = 90,但它是 1.26E-43。

我知道我的转换器是小端,所以我也试过反转数组,像这样:

byte[] b = BitConverter.GetBytes(90);
Array.Reverse(b);
float fb = BitConverter.ToSingle(b, 0);

然后得到答案fb = 9.0E+15.

有什么想法吗? 提前致谢!

BitConverter.GetBytes(90); 将为您提供 90 整数 值的字节。由于您需要 float 值的字节,因此需要指定:

BitConverter.GetBytes((float)90.0);

BitConverter.GetBytes(90.0f);

您需要更改 GetBytes 上的输入,它现在是一个整数。

它现在正在获取有关整数存储方式的字节,并将其解释为浮点数在内存中的存储方式。

将其更改为浮点数。

尝试:

byte[] b = BitConverter.GetBytes(90f);  // <-- add an f for floats.
Array.Reverse(b);
float fb = BitConverter.ToSingle(b, 0);

90 是被编译器解释为 Int32 而不是 Single 的文字。所以你调用了 GetBytes().

的错误重载

使用:byte[] b = BitConverter.GetBytes(90f);

告诉编译器你想调用GetBytes(float)