本文介绍了两个16位整数到一个32位浮点值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am able to extract values from modbus as 16-bit shorts (unsigned) or as ints (should be treated as 16-bit words). I am tasked to combine two values to create a single 32 bit float value using java.

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

some example values I observed using a gui program:


  • int + int = float

  • 0 + 16256 = 1

  • 0 + 17096 = 100

  • 0 + 17097 = 100.5

  • 0 + 17530 = 1000

  • 8192 + 17530 = 1000.5

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

我尝试了有点明智的运营商,但这似乎并没有成功。
让我挠头!

I attempted bit wise operators but that didn't seem to do the trick.leaves me scratching my head!

推荐答案

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

You can use Float.intBitsToFloat(int bits) to build a float from the bits of an 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

这篇关于两个16位整数到一个32位浮点值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 10:24