2

我有一个十六进制数字(一种颜色)存储在一个字符串中,如下所示:“ff62e6b8”。我需要将其转换回整数,以便再次将其用作颜色值。我尝试了以下方法:

Int i = Integer.parseInt("ff62e6b8", 16);
Int i = Integer.valueOf("ff62e6b8", 16);
Int i = Integer.decode("ff62e6b8");

但是所有这些方法都会引发异常。我在这里错过了什么吗?

4

4 回答 4

8

FF62E6B8 是十进制的 4284671672。把它放进去简直太大了int。您可以在int其中存储与范围匹配的值<-2^31 - 1 ; 2^31 - 1>。尝试long改用:

Long i = Long.parseInt("ff62e6b8", 16);
Long i = Long.valueOf("ff62e6b8", 16);
Long i = Long.decode("ff62e6b8"); 
于 2013-01-19T15:31:04.607 回答
5

试试这个:

int colorVal = Color.parseColor("#ff62e6b8");

例子 :

myLayout.setBackgroundColor(Color.parseColor("#ff62e6b8"));

通过这个你会得到colorVal = -10295624

如果您想从 colorVal 生成 hexColor 代码,请使用:

String hexColor = String.format("#%06X", (0xFFFFFF & colorVal));

通过这个你会得到hexColor = #62E6B8

谢谢。

于 2013-01-19T15:33:41.857 回答
1

第一个会是好的

但 ff62e6b8 超过了 int 的大小(32 位 - 有符号),这就是引发异常的原因。

Long l = Long.parseLong("ff62e6b8", 16);

应该做的工作

于 2013-01-19T15:36:32.417 回答
0
String hex = "1B";
int val = Integer.parseInt(hex, 16);

那是正确的转换。

于 2013-01-19T15:32:09.843 回答