两个 16 位整数到一个 32 位浮点值
Two 16 bit ints to One 32 bit float value
我能够从 modbus 中提取值作为 16 位短整型(无符号)或整数(应被视为 16 位字)。我的任务是使用 java.
组合两个值来创建一个 32 位浮点值
我使用 gui 程序观察到的一些示例值:
- 整数 + 整数 = 浮点数
- 0 + 16256 = 1
- 0 + 17096 = 100
- 0 + 17097 = 100.5
- 0 + 17530 = 1000
- 8192 + 17530 = 1000.5
我尝试了位运算符,但似乎没有成功。
让我摸不着头脑!
您可以使用 Float.intBitsToFloat(int bits)
从 int
的位构建 float
。
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
。
我能够从 modbus 中提取值作为 16 位短整型(无符号)或整数(应被视为 16 位字)。我的任务是使用 java.
组合两个值来创建一个 32 位浮点值我使用 gui 程序观察到的一些示例值:
- 整数 + 整数 = 浮点数
- 0 + 16256 = 1
- 0 + 17096 = 100
- 0 + 17097 = 100.5
- 0 + 17530 = 1000
- 8192 + 17530 = 1000.5
我尝试了位运算符,但似乎没有成功。 让我摸不着头脑!
您可以使用 Float.intBitsToFloat(int bits)
从 int
的位构建 float
。
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
。