两个16位整数到一个32位浮点值

时间:2017-05-11 07:14:06

标签: java algorithm floating-point int modbus

我能够将modbus中的值提取为16位短路(无符号)或整数(应该被视为16位字)。我的任务是组合两个值,使用java创建一个32位浮点值。

我使用gui程序观察到的一些示例值:

  • int + int = float
  • 0 + 16256 = 1
  • 0 + 17096 = 100
  • 0 + 17097 = 100.5
  • 0 + 17530 = 1000
  • 8192 + 17530 = 1000.5

我尝试了有点明智的操作员,但似乎没有做到这一点。 让我挠头!

1 个答案:

答案 0 :(得分:1)

您可以使用Float.intBitsToFloat(int bits)float的位构建int

short high = ... // the high 16 bits
short low = ... // the low 16 bits
int combined = (high << 16) | low;
float num = Float.intBitsToFloat(combined);

例如:

short high = 17530;
short low = 8192;

生成浮动1000.5