負數補碼(16進位制轉10進位制的負數)

獵手家園發表於2022-10-13

假如我想透過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));
}

 

相關文章