我有一个存储在字符串中的十六进制数字(颜色),如下所示:“ff62e6b8”。 我需要将其转换回整数,以便我可以再次将其用作颜色值。 我尝试过以下方法:
Int i = Integer.parseInt("ff62e6b8", 16);
Int i = Integer.valueOf("ff62e6b8", 16);
Int i = Integer.decode("ff62e6b8");
但所有这些方法都会引发异常。我在这里错过了什么吗?
答案 0 :(得分: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");
答案 1 :(得分:5)
试试这个:
int colorVal = Color.parseColor("#ff62e6b8");
示例:
myLayout.setBackgroundColor(Color.parseColor("#ff62e6b8"));
通过这个,您将获得colorVal = -10295624
。
如果你想从colorVal 生成 hexColor代码,请使用:
String hexColor = String.format("#%06X", (0xFFFFFF & colorVal));
通过这个,您将获得hexColor = #62E6B8
。
感谢。
答案 2 :(得分:1)
第一个是好的
但是ff62e6b8超过int的大小(32位 - 签名),这就是引发异常的原因。
Long l = Long.parseLong("ff62e6b8", 16);
应该做的工作
答案 3 :(得分:0)
String hex = "1B";
int val = Integer.parseInt(hex, 16);
这是正确的转换。