将十六进制值(0x45E213)存储为整数

Dio*_*ijn 5 java android hex numberformatexception

在我的应用程序中,我使用转换器从3个值> RGB颜色和Hex值创建.我在运行时使用它在我的应用程序中设置渐变背景.

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

int hex = 0x45E213;
Run Code Online (Sandbox Code Playgroud)

它确实工作正常,这不会给出错误.

现在我知道了这一点,我将其替换#为了0x,并尝试将其从String转换为Integer.

int hexToInt = new Integer("0x45E213").intValue();
Run Code Online (Sandbox Code Playgroud)

但是现在我得到了numberFormatException,因为在转换时,它会不同意这个角色E

我怎么解决这个问题?因为我真的需要它作为整数或Java/Eclipse不会在它的方法中使用它.

Mat*_*sch 12

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

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

Integer.parseInt("45E213", 16)
Run Code Online (Sandbox Code Playgroud)

或者切断0x

Integer.parseInt("0x45E213".substring(2), 16);
Run Code Online (Sandbox Code Playgroud)

要么

Integer.parseInt("0x45E213".replace("0x",""), 16);
Run Code Online (Sandbox Code Playgroud)


Ada*_*dam 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));
Run Code Online (Sandbox Code Playgroud)

产量

45e213
45e213
Run Code Online (Sandbox Code Playgroud)