【问题标题】:Android hexadecimal to decimal conversion [duplicate]Android十六进制到十进制转换[重复]
【发布时间】:2016-05-16 11:58:54
【问题描述】:

我需要一些帮助,将我从汽车中的 OBD 适配器得到的答案转换为十进制,然后将转换产生的任何值添加到公式并打印出来。

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 个数字与答案无关 (6240901F30)。所以我们剩下的是最后(在这种情况下)4个数字(1F30),它们是十六进制的,需要转换为十进制。然后将该值添加到公式x * 0,0625 - 512。它需要跳过前六个数字,否则答案将是错误的。

我怎样才能做到这一点?

【问题讨论】:

    标签: java android obd-ii


    【解决方案1】:

    Integer.parseInt 与“radix”参数一起使用:

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

    输出:

    7984

    【讨论】:

    • @EvgeniyMishustin 也称为“基数”,它是给定数字表示中存在的不同数字的数量。例如binary <=> radix = 2octal <=> radix = 8; hexadecimal <=> radix = 16.
    • 虽然“1F30”不是静态值。这意味着“1F30”将更新为不同的数字,因为我有它在一个while循环中。这是在计算汽车电池的电流,因此这将无法正常工作。
    • @swess 您可以将常量替换为任何字符串变量。
    • @ArnaudDenoyelle,啊thanx,只是总是使用“基础”这个词!每天学习新东西!
    • @ArnaudDenoyelle 好的,怎么样?
    猜你喜欢
    • 2013-06-13
    • 1970-01-01
    • 2017-12-30
    • 2016-12-27
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 2019-01-27
    相关资源
    最近更新 更多