簡體   English   中英

將RGBA值轉換為十六進制顏色代碼

[英]Convert RGBA values to hex color code

我的應用程序中有一些滑塊允許用戶更改ARGB顏色,但我需要將這些值轉換為十六進制值,如0xff000000,它是純黑色。

這是我到目前為止:

protected int toHex(Color col) {
    String as = pad(Integer.toHexString(col.getAlpha()));
    String rs = pad(Integer.toHexString(col.getRed()));
    String gs = pad(Integer.toHexString(col.getGreen()));
    String bs = pad(Integer.toHexString(col.getBlue()));
    String hex = "0x" + as + rs + gs + bs;
    return Integer.parseInt(hex, 16);
}

private static final String pad(String s) {
    return (s.length() == 1) ? "0" + s : s;
}

但是在獲得如下的Integer值后,我得到輸入字符串的NumberFormatException:“0xccffffff”:

int color = toHex(new Color(153f, 153f, 153f, 0.80f));

有關如何將其轉換為整數的任何想法? 謝謝。

Color參數必須在1f和0f之間浮動。 所以這是一個有效的顏色:

int color = toHex(new Color(1f, 1f, 1f, 1f));

哪個是白色的。

問題是你包含了alpha值。 所以你的最大顏色代碼是#FFFFFFFF (8位數)。

Integer.parseInt方法允許您將值從-0x80000000解析為0x7FFFFFFF 為了從中獲取你的值0xCC999999 ,你必須否定該值並輸入-0x33666667 - 這當然沒有用。

笨重但穩定的解決方法是使用Long

(int) Long.parseLong(text, 16)

暫無
暫無

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

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