假如我想通过modbus tcp接收设备上传的报文,该设备显示为负数,但报文上无法解析出来(温度报文异常,负数无法显示与转换)。这时候,我就需要对这个报文进行负数补码形式,16进制转10进制的负数。
直接上干货
在这里插入代码片
public static void main(String[] args) {
//补码
BigDecimal s = new BigDecimal(Integer.valueOf("fff6",16).shortValue());
BigDecimal ss = new BigDecimal("0.1");
System.out.println(s.multiply(ss));
}