2016-05-16 141 views
-2

我需要一些幫助,將我從我的汽車中的OBD適配器獲得的答案轉換爲十進制,然後將轉換後出現的任何值添加到公式中並打印出來。Android十六進制到十進制轉換

public void run() { 
    OBDcmds(); 

    try { 
     OdbRawCommand ANS = new OdbRawCommand("22 40 90"); 


     while (!Thread.currentThread().isInterrupted()) { 
      Log.d("Log", "ANS: " + ANS.getFormattedResult()); 

      try { 
       ANS.run(mmInStream, mmOutStream); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
        } 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
       System.out.println("inside catch before while"); 
      } 
     } 

ANS當被問及會返回類似 「6240901F30」,其中第6號是風馬牛不相及的答案( 1F30)。所以我們剩下的是最後一個(在這種情況下)4個數字(1F30),它們是十六進制的,需要轉換成十進制數。這個值然後被添加到公式x * 0,0625 - 512。它需要跳過這六個第一個數字,否則答案將是錯誤的。

我怎麼能把這個關掉?

回答

1

使用Integer.parseInt的 「基數」 的說法:

System.out.println(Integer.parseInt("1F30", 16)); 

輸出:

+1

什麼是 「基數」? –

+0

@EvgeniyMishustin也被稱爲「基數」,它是給定數字表示中存在的不同數字的數量。例如,'binary <=> radix = 2'; '八進制<=> radix = 8'; '十六進制<=> radix = 16'。 –

+0

「1F30」不是靜態值。這意味着「1F30」會更新爲不同的數字,因爲我在while循環中有它。這是計算車內電池的電流,因此這不會令人傷心。 – swess