一尘不染

将十六进制字符串解析为整数会引发NumberFormatException吗?

java

因此,在Java中,您知道如何声明这样的整数:

int hex = 0x00ff00;

我认为您应该能够逆转这一过程。我有这个代码:

Integer.valueOf(primary.getFullHex());

其中primary是自定义Color类的对象。它的构造函数使用Integer表示不透明度(0-99)和十六进制String(例如00ff00)。

这是getFullHex方法:

public String getFullHex() {
    return ("0x" + hex);
}

当我调用此方法时,它给出了以下信息NumberFormatException

java.lang.NumberFormatException: For input string: "0xff0000"

我不明白发生了什么事。有人可以解释一下吗?


阅读 280

收藏
2020-09-08

共1个答案

一尘不染

请问有帮助吗?

Integer.parseInt("00ff00", 16)

16表示您应该将字符串解释为基于16的(十六进制)。通过使用2您可以解析二进制数,8代表八进制。10是默认值,并解析十进制数字。

在您的情况下,Integer.parseInt(primary.getFullHex(), 16)由于0x前缀为前缀,将无法正常工作getFullHex()-摆脱掉,您会没事的。

2020-09-08