如何转换十六进制字符串为int?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (63)

我想将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标准库中完成。

提问于
用户回答回答于

对于int它太大了。

使用

Long.parseLong("AA0F245C", 16);
用户回答回答于

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

Long.parseLong("AA0F245C", 16);

扫码关注云+社区

领取腾讯云代金券