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