【问题标题】:Is there way to convert float from 32bit integer? [closed]有没有办法将浮点数从 32 位整数转换? [关闭]
【发布时间】:2021-12-08 16:30:36
【问题描述】:

使用 c#

我需要读取的浮点值

= 24.500000

当我尝试阅读时,我得到了这个结果

= 1103364096

我应该如何转换才能获得真正的价值?我需要这方面的帮助。

我的失败尝试:

int data_1 = 1103364096;
UInt16 value = (UInt16)x;
ushort data_2= (ushort)(1103364096 & ((1 << 16) - 1));
int r = 1103364096;
short trimmed = unchecked((short)r);

这些都行不通!

【问题讨论】:

标签: c# type-conversion integer


【解决方案1】:

使用Convert.ToFloat(x) 将(从任何东西)转换为浮点数。 使用 Convert.ToInt32(x) 将(从任何东西)转换为 Int32。

【讨论】:

  • 那如何将1103364096 变成24.5
【解决方案2】:

根据 Jeremy 的建议,您需要使用 BitConverter。 我们将首先获取整数i 的字节表示,然后将这些字节解释为float

int i = 1103364096;
byte[] b = BitConverter.GetBytes(i);
float f = BitConverter.ToSingle(b, 0);
Console.WriteLine(f); // outputs 24.5

Try it online

【讨论】:

  • 那么我该如何反其道而行之呢?浮动 i = 24.5; byte[] b = BitConverter.GetBytes(i);?浮动 f = BitConverter.ToSingle(b, 0); ? Console.WriteLine(f); // 输出 1103364096 我该怎么做
  • @Adem .GetBytes 有一个float 过载,所以你可以使用byte[] b = BitConverter.GetBytes(123.45f); 然后你可以使用int i = BitConverter.ToInt32(b, 0);
  • 字符串数据 = "123.45" byte[] b =BitConverter.GetBytes(Convert.ToDouble(data)f); == error 字符串数据怎么输入那个模式“123.45”f是错误的
  • 浮点数是单数,而不是双数。看来你现在问的问题超出了这个问题的范围,所以我建议再问一个。
猜你喜欢
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
相关资源
最近更新 更多