处理十六进制字符串颜色



我正在从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");

相关内容

  • 没有找到相关文章