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