最佳答案
我试图将一个长度为8个十六进制字符的字符串转换成一个整数,这样我就可以进行 int 比较,而不是对许多不同的值进行字符串比较。
我知道这在 C + + 中很简单,但是我需要在 Java 中完成。我需要满足的测试用例实质上是将“ AA0F245C”转换为 int,然后返回到该字符串,这样我就知道它正在进行正确的转换。
我试过以下方法:
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 标准库中完成。
提前谢谢你的帮助。