簡體   English   中英

將十六進制字符串處理為顏色

[英]processing hex string to color

我正在從 JSON 文件中讀取十六進制顏色,但需要將它們作為 int 獲取,以便我可以創建顏色。

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

返回16711680

int c = unhex("FF0000");

返回16711680

我該怎么做?

如果您想重新發明輪子,您可以將字符串解析為 RGB 十六進制值“FF”、“00”和“00”,將十六進制值轉換為與 int 值對應的整數(分別為 255、0 和 0)從 0 到 255,然后使用這些 RGB 值創建一個 Color 對象。

不過就我個人而言,我只會使用:

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

你混淆了兩件事:

第一件事:#FF0000這樣的十六進制值代表整數值。

第二件事:在內部,Processing 將顏色值表示為整數。

第一個概念中的整數與第二個概念中的整數不同。

事實上,十六進制顏色值是 Processing 編輯器的 Processing 中的一個特例,它為您做了一些魔術。 我不知道直接從字符串值到十六進制顏色值的方法。

相反,您應該將 String 值解析為其各個組件,將它們轉換為整數,然后使用三參數color()函數來創建顏色。

有關更多信息,請參閱此問題: Java 中的十六進制到整數

我所做的只是重新創建這樣的顏色:

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

您可以嘗試使用以下方法 -

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM