我正在从JSON文件中读取十六进制颜色,但需要将它们作为int读取,以便我可以创建颜色。
int col=Integer.parseInt("FF0000",16);
返回16711680
int c = unhex("FF0000");
返回16711680
我该怎么做?
如果要重新发明轮子,则可以将字符串解析为rgb hex值" ff"," 00"," 00"one_answers" 00",将十六进制值转换为整数(255555555555555555分别对应于0-255的int值,然后创建一个带有RGB值的颜色对象。
就个人而言,我只是使用:
Color red = Color.decode("#FF0000"); //That's definitely red
你正在混合两件事:
事物一:像#FF0000
这样的十六进制值表示整数值。
事物二:内部,处理代表颜色值作为整数。
第一个概念中的整数与第二个概念中的整数不同。
实际上,十六进制颜色值是处理处理编辑器为您做一些魔术的特殊情况。我不知道直接从字符串值转到十六进制颜色值的方法。
相反,您应该将字符串值分析到其各个组件中,将它们转换为整数,然后使用三词color()
函数创建颜色。
有关更多信息,请参阅此问题:Java中的六核与整数
我所做的只是像这样重新创建颜色:
int c = Integer.parseInt(obj.getString("color"), 16);
c = color(red(c), green(c), blue(c));
您可以尝试使用以下 -
Color c = Color.parseColor("#c0c0c0");
int c = -16777216 + unhex("FF0000");