将十六进制字符串处理为颜

时间:2018-02-14 00:58:28

标签: java colors hex processing

我正在从JSON文件中读取十六进制颜色,但是需要将它们作为一个int来创建一个颜色。

int col=Integer.parseInt("FF0000",16); 

返回16711680

int c = unhex("FF0000");

返回16711680

我该怎么做?

4 个答案:

答案 0 :(得分:1)

你在混淆两件事:

Thing one:#FF0000这样的十六进制值表示整数值。

Thing two:在内部,Processing将颜色值表示为整数。

第一个概念中的整数与第二个概念中的整数不同。

实际上,十六进制颜色值是处理编辑器处理中的特殊情况,为您做了一些魔术。我不知道如何直接从字符串值转到十六进制颜色值。

相反,您应该将String值解析为其各个组件,将它们转换为整数,然后使用三参数color()函数创建颜色。

有关详细信息,请参阅此问题:Hexadecimal to Integer in Java

答案 1 :(得分:1)

如果你想重新发明轮子,你可以将字符串解析成RGB十六进制值" FF"," 00"和" 00",转换十六进制值为整数(分别为255,0和0),对应于0-255的int值,然后创建一个具有这些RGB值的Color对象。

就个人而言,我只是使用:

Color red = Color.decode("#FF0000"); //That's definitely red

答案 2 :(得分:0)

我所做的只是重新创建了这样的颜色:

int c = Integer.parseInt(obj.getString("color"), 16);
c = color(red(c), green(c), blue(c));

答案 3 :(得分:0)

您可以尝试使用以下 -

Color c = Color.parseColor("#c0c0c0");