我正在从蓝牙获取数据,并且想要将字节值转换为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。