要浮动的字节数组

我试图将浮点数转换为长度为 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。


有任何想法吗?提前致谢!


梵蒂冈之花
浏览 124回答 3
3回答

千万里不及你

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

天涯尽头无女友

您需要更改 GetBytes 上的输入,现在它是一个整数。现在它正在获取有关如何存储整数的字节并将其解释为如何将浮点数存储在内存中。将其更改为浮动。尝试:byte[] b = BitConverter.GetBytes(90f);&nbsp; // <-- 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).
打开App,查看更多内容
随时随地看视频慕课网APP