2016-05-16 100 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