【问题标题】:processing hex string to color将十六进制字符串处理为颜色
【发布时间】:2018-07-24 11:46:19
【问题描述】:
我正在从 JSON 文件中读取十六进制颜色,但需要将它们作为 int 获取,以便创建颜色。
int col=Integer.parseInt("FF0000",16);
返回16711680
int c = unhex("FF0000");
返回16711680
我该怎么做?
【问题讨论】:
标签:
java
colors
hex
processing
【解决方案1】:
如果你想重新发明轮子,你可以将字符串解析成 RGB 十六进制值“FF”、“00”和“00”,将十六进制值转换为对应的整数(分别为 255、0 和 0)转换为 0-255 之间的值,然后使用这些 RGB 值创建一个 Color 对象。
但就个人而言,我只是使用:
Color red = Color.decode("#FF0000"); //That's definitely red
【解决方案2】:
你把两件事混为一谈:
第一件事:像#FF0000这样的十六进制值表示整数值。
第二件事:在内部,Processing 将颜色值表示为整数。
第一个概念中的整数与第二个概念中的整数不同。
事实上,十六进制颜色值是处理编辑器处理中的一种特殊情况,它为您发挥了一些作用。我不知道直接从字符串值到十六进制颜色值的方法。
相反,您应该将 String 值解析为其各个组件,将它们转换为整数,然后使用三参数 color() 函数来创建颜色。
有关更多信息,请参阅此问题:Hexadecimal to Integer in Java
【解决方案3】:
我所做的只是像这样重新创建颜色:
int c = Integer.parseInt(obj.getString("color"), 16);
c = color(red(c), green(c), blue(c));
【解决方案4】:
您可以尝试使用以下 -
Color c = Color.parseColor("#c0c0c0");