我正在从蓝牙获取数据,并且想要将字节值转换为int并将结果显示为float,因为我编写了以下代码

String prob1Str = manufactureData.substring(20, 24); // prob1Str = FE70

float prob1Temp =  (Integer.parseInt(prob1Str,16)&0xffff); // Here I am getting prob1Tem = 65136.0 instead of -400.0
model.setProb1Temp(prob1Temp);


从上面的代码中我得到prob1Tem = 65136.0而不是-400.0

有人可以帮我解决这个问题吗

谢谢

最佳答案

只是将您的结果简而言之!

float prob1Temp = (short)Integer.parseInt(prob1Str, 16);


int是32位,因此0x0000FE70 = 65136,它是一个正值!

Short是16位,0xFE70 = -400,您将把它重铸为int或float。

有关更多详细信息,请参见that explanation

10-08 17:41