转换hexstring为int

我试图将八字符长的hex代码的string转换为一个整数,以便我可以做int比较,而不是string比较了很多不同的值。

我知道这在C ++中是相当简单的,但我需要在Java中完成。 我需要满足的testing用例本质上是将“AA0F245C”转换为int,然后返回到该string,以便我知道它正在转换。

我已经尝试了以下内容:

int decode = Integer.decode("0xAA0F245C"); // NumberFormatException int decode2 = Integer.decode("AA0F245C"); //NumberFormatException int parseInt = Integer.parseInt("AA0F245C", 16); //NumberFormatException int valueOf = Integer.valueOf("AA0F245C", 16); //NumberFormatException 

我也曾经尝试过这样做两个字符,并将结果相乘,结果是转换工作,但数字是不正确的。

 int id = 0; for (int h = 0; h < hex.length(); h= h+2) { String sub = hex.subSequence(h, h+2).toString(); if (id == 0) id = Integer.valueOf(sub, 16); else id *= Integer.valueOf(sub, 16); } //ID = 8445600 which = 80DEA0 if I convert it back. 

我不能仅仅使用第三方库,所以这个必须在Java标准库中完成。

提前谢谢你的帮助。

对于int(它是4个字节并且有符号)来说太简单了。

使用

 Long.parseLong("AA0F245C", 16); 

Java Integer可以处理的最大值是2147483657或2 ^ 31-1。 AA0F245C的hex数字是2​​853119068,十进制数字太大,所以需要使用

 Long.parseLong("AA0F245C", 16); 

使其工作。

你可以这样使用

 System.out.println(Integer.decode("0x4d2")) // output 1234 //and vice versa System.out.println(Integer.toHexString(1234); // output is 4d2); 

你可以用parseInt和format参数轻松地做到这一点。

 Integer.parseInt("-FF", 16) ; // returns -255 

javadoc整数

这是正确的答案:

myPassedColor = "#ffff8c85" int colorInt = Color.parseColor(myPassedColor)