Java将十六进制字符串放入int(不转换)

时间:2014-10-15 13:02:26

标签: android

嘿我有String包含0xff906000。当然,它太大而不能存储为dec int。相反,我希望int看起来与0xff906000完全相同 - 保持十六进制格式。

我可以声明int foo = 0xffffffff;(不超过int范围),因此必须有一种方法可以将String设置为我的int,同时保留确切的数字。

我需要setBackgroundColor(int);的全部内容。我可以输入十进制int的值,但我想保留aRGB结构,这只能通过十六进制图示(0xaaRRGGBB)。

Integer.parseInt

抛出java.lang.NumberFormatException: Invalid int: "0xff906000"

Integer.decode

完全'转换超出int

范围的数字

还有其他可能性吗?

2 个答案:

答案 0 :(得分:2)

计算机将以二进制形式存储该号码。不是十六进制,而不是十进制。并且int无法保持超出其范围的值 - 因为您需要long。出于显示目的,您可以致电Long.toHexString(long),如

long foo = 0xff90600000L;
System.out.println("0x" + Long.toHexString(foo));

输出

0xff90600000

修改要获取更新后的值,请使用Integer.toHexString(int)

int foo = 0xff906000;
System.out.println("0x" + Integer.toHexString(foo));

输出

0xff906000

答案 1 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

对于一个int(4个字节并签名)来说它太大了,所以试试这个:

Long.parseLong("0xff906000", 16);