将十六进制字符串转换为int(JAVA)

时间:2018-07-07 17:02:36

标签: java colors

因此,我正在一个有3个滑块(r,g,b)的项目中工作,我使用String.format("%02x%02x%02x", r, g, b);将其转换为十六进制字符串,我的问题是我无法将其转换为int。我已经在互联网上搜索,找不到任何东西,唯一的解决方法是Integer.parseInt(hex, 16),它的值为87295,原始颜色为0054FF,得到87295 (我需要将它作为int的原因)是因为我所有的void方法都需要int形式的十六进制颜色)

2 个答案:

答案 0 :(得分:1)

Integer.parseInt(String s, 16);

是您有需要的朋友

  

将字符串参数解析为第二个参数指定的基数中的有符号整数...返回返回的整数值。
  ~ Java doc ~


示例:

Integer.parseInt("0054FF", 16);

输出:

  

21759

输出与您指定的输出(87295)不匹配。我相信您的错误在代码的其他地方。


编辑:

根据您的评论,

Integer.decode(String s);
我猜

是你所需要的。

答案 1 :(得分:0)

我的回答假设您正在询问X - Y problem,这意味着它可能不会面对您的问题。

假设rgb的类型为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)。