我试图将浮点数转换为长度为 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。有任何想法吗?提前致谢!
3 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
BitConverter.GetBytes(90);
将为您提供整数值的字节90
。由于您需要值的字节float
,因此需要指定:
BitConverter.GetBytes((float)90.0);
或者
BitConverter.GetBytes(90.0f);
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
您需要更改 GetBytes 上的输入,现在它是一个整数。
现在它正在获取有关如何存储整数的字节并将其解释为如何将浮点数存储在内存中。
将其更改为浮动。
尝试:
byte[] b = BitConverter.GetBytes(90f); // <-- add an f for floats.
Array.Reverse(b);
float fb = BitConverter.ToSingle(b, 0);
收到一只叮咚
TA贡献1821条经验 获得超4个赞
90
是一个被编译器解释为 的文字Int32
,而不是Single
。所以你调用了错误的重载GetBytes()
。
使用:byte[] b = BitConverter.GetBytes(90f);
告诉编译器你想调用GetBytes(float)
.
- 3 回答
- 0 关注
- 122 浏览
添加回答
举报
0/150
提交
取消