Java - 将十六进制转换为十进制 - 使一个字符串=正确的数字

时间:2012-12-11 20:31:18

标签: java string parsing int

因错误而错误的错误

我最近创建了一个将rgb值转换为十六进制的Java程序。现在我正在尝试制作一个相反的程序。我已经想出了我要使用的算法,我只需要将字符A - F转换为值10 - 15。好像很简单吧?这是我遇到问题的地方。

这是我到目前为止的代码。字符串被送入nums(),然后根据数组abc对其进行检查。一旦找到匹配,则需要字符串a并将其转换为整数,然后取i并添加10以获得正确的数字。

class TextToNum {
  String[] abc = { "A", "B", "C", "D", "E", "F" };
  public int nums(String a) {
    for(int i = 0; i < abc.length; i++) {
      if (a == abc[i]) {
        a = Integer.parseInt(a.trim());
        a = i + 10;
      }
    }
    return a;
  }
}

我得到的错误是:

gbConv.java:52: incompatible types
found   : int
required: java.lang.String
                a = Integer.parseInt(a.trim());
                                    ^
rgbConv.java:53: incompatible types
found   : int
required: java.lang.String
                a = i + 10;
                      ^
rgbConv.java:56: incompatible types
found   : java.lang.String
required: int
        return a;
               ^

很明显Integer.parseInt()出了问题,但我不知道如何修复它。我一直在网上看,我找不到任何东西。任何建议/教程都会有很大的帮助。

3 个答案:

答案 0 :(得分:10)

要将十六进制字符串转换为int,您只需使用Integer.parseInt(str, 16)

答案 1 :(得分:9)

为什么不试试已有的。

  Color.decode("hex string");

答案 2 :(得分:1)

仅当Integer.parseInt(String str)包含整数时,

str才有效。就像你有一个字符串str="12345" Integer.parseInt(str)结果12345为整数。

但是在你提到的情况下,你正在通过"A", "B", "C", "D", "E", "F"中的任何一个。