[英]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.