代码改变世界

负数补码(16进制转10进制的负数)

2022-10-13 07:44  猎手家园  阅读(225)  评论(0编辑  收藏  举报

假如我想通过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));
}