温度传感器负的温度值怎么从16进制转换为负的温度值(-2.3度)

发布时间:2024年01月12日

1、接收到16进制温度报文,判断有没有FF,如果有FF说明这个16进制温度是一个负值温度;

byte a=**接收的温度16进制字节
String val = Integer.toHexString(a & 0xFF);

2、if判断是否包含ff;

if(val.equals("ff"))

3、如果不包含ff,直接将16进制转10进制;

Integer.parseInt(数值, 16)

4、如果包含ff,先将16进制转10进制,再将10进制转2进制,再反转,再加1,再2进制转换为10进制;

public static String hex2binary(String val) {
        //16进制转10进制
        BigInteger sint = new BigInteger(val, 16);
        //10进制转2进制
        String result = sint.toString(2);
        return result;
    }

5、再反转加1;将hex2binary方法返回值接收到,再调用ICode方法进行反转。

public static String ICode(String  val){
    StringBuilder sr = new StringBuilder(val);
    for (int i = 0; i < sr.length(); i++) {
        if (sr.substring(i,i+1).equals("0")){
            sr.replace(i,i+1,"1");
        }else{
            sr.replace(i,i+1,"0");
        }
    }
    return sr.toString();
}
6、再将2进制转换为10进制,得出负值。
Integer.parseInt(传入ICode方法返回的2进制结果,2)

文章来源:https://blog.csdn.net/leidong2009/article/details/135517772
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。