5

在我的应用程序中,我使用转换器从 3 个值 > RGB 颜色创建一个十六进制值。我使用它在运行时在我的应用程序中设置渐变背景。

现在是以下问题。转换器的结果是 a (String) #45E213,它不能存储在整数中。但是当你创建一个整数时,

int hex = 0x45E213;

它确实可以正常工作,并且不会出错。

现在我知道了,我替换了#to 0x,并尝试将其从 String 转换为 Integer。

int hexToInt = new Integer("0x45E213").intValue();

但是现在我得到了numberFormatException,因为在转换时,它与角色不符E

我该如何解决这个问题?因为我真的需要它作为整数或 Java/Eclipse 不会在其方法中使用它。

4

3 回答 3

13

http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html

带有字符串的 Integer 构造函数的行为与带有基数 10 的 parseInt 相同。您可能想要带有基数 16 的 String.parseInt。

Integer.parseInt("45E213", 16)

或切断 0x

Integer.parseInt("0x45E213".substring(2), 16);

或者

Integer.parseInt("0x45E213".replace("0x",""), 16);
于 2012-03-17T11:09:55.890 回答
7

鲜为人知的 Integer.decode(String) 在这里可能很有用。请注意,它还会将前导零作为八进制数,您可能不想要,但如果您追求便宜又愉快的东西......

int withHash = Integer.decode("#45E213");
System.out.println(Integer.toHexString(withHash));

int withZeroX = Integer.decode("0x45E213");
System.out.println(Integer.toHexString(withZeroX));

输出

45e213
45e213
于 2012-03-17T11:23:57.347 回答
4

此方法接受您可以使用的字符串,Color.parseColor(String)但您需要将0x前缀替换为#

于 2012-03-17T11:12:19.753 回答