因此,我正在一个有3个滑块(r,g,b)的项目中工作,我使用String.format("%02x%02x%02x", r, g, b);
将其转换为十六进制字符串,我的问题是我无法将其转换为int。我已经在互联网上搜索,找不到任何东西,唯一的解决方法是Integer.parseInt(hex, 16)
,它的值为87295,原始颜色为0054FF,得到87295 (我需要将它作为int的原因)是因为我所有的void方法都需要int形式的十六进制颜色)
答案 0 :(得分:1)
Integer.parseInt(String s, 16);
是您有需要的朋友
将字符串参数解析为第二个参数指定的基数中的有符号整数...返回返回的整数值。
~ Java doc ~
示例:
Integer.parseInt("0054FF", 16);
输出:
21759
输出与您指定的输出(87295)不匹配。我相信您的错误在代码的其他地方。
编辑:
根据您的评论,
Integer.decode(String s);
我猜是你所需要的。
答案 1 :(得分:0)
我的回答假设您正在询问X - Y problem,这意味着它可能不会面对您的问题。
假设r
,g
,b
的类型为int
,并假设您不需要Alpha颜色,则可以使用一些位操作技巧这样,就可以直接使用原始值来计算颜色值,而无需将其转换为十六进制字符串。
int iColor = (r << 16) + (g << 8) + b;
然后该值可用于转换为十六进制字符串,以满足您的进一步需求。
String sColorHex = Integer.toHexString(iColor);
更新:由于另一个答案的注释,alpha不应该被忽略,原始问题真正需要的似乎是color int值。直接使用它来获取所需的值:
int color = 0xFF000000 + (r << 16) + (g << 8) + b;
最初的问题没有提到Alpha颜色,因此假设Alpha为100%(0xFF),上面显示为0xFF000000
(= 0xFF << 24)。