Convert RGBA values to hex color code

匿名 (未验证) 提交于 2019-12-03 10:24:21

问题:

I have some sliders in my application that allows the user to change ARGB colors, however I need to convert these values to a hex value like 0xff000000, which is solid black.

This is what I have so far:

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; } 

However upon getting the Integer value like below, I get a NumberFormatException for input string: "0xccffffff":

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

Any ideas on how to get this to an Integer? Thanks.

回答1:

The Color parameters must be floats between 1f and 0f. So this is a valid color:

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

Which is white.



回答2:

The problem is that you are including alpha values. So your maximum color code is #FFFFFFFF (8 digits).

The method Integer.parseInt will let you parse value from -0x80000000 to 0x7FFFFFFF. In order to get your value 0xCC999999 from it, you would have to negate the value and input -0x33666667 - which is of course not useful at all.

The clunky but stable workaround is using Long.

(int) Long.parseLong(text, 16) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!