为了账号安全,请及时绑定邮箱和手机立即绑定

要浮动的字节数组

要浮动的字节数组

C#
梵蒂冈之花 2023-09-24 15:42:18
我试图将浮点数转换为长度为 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);


查看完整回答
反对 回复 2023-09-24
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

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


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


将其更改为浮动。


尝试:


byte[] b = BitConverter.GetBytes(90f);  // <-- add an f for floats.

Array.Reverse(b);

float fb = BitConverter.ToSingle(b, 0);


查看完整回答
反对 回复 2023-09-24
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

90是一个被编译器解释为 的文字Int32,而不是Single。所以你调用了错误的重载GetBytes()

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

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


查看完整回答
反对 回复 2023-09-24
  • 3 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信