Integer.valueOf()无效的int

时间:2012-11-23 23:38:24

标签: java integer value-of

我正在尝试从r,g,b值创建颜色值,添加alpha字节以创建颜色int。

但我使用以下方式收到错误:

  

Integer.valueOf(colorStr,16);

colorStr是我构建的字符串,现在发送错误的值是"0XFF2f6b55" 它发给我无效的int。

2 个答案:

答案 0 :(得分:5)

Java integer涵盖-2 ^ 31到2 ^ 31-1(2147483647)的值。你的值是(4281297749)十进制,这对于java的整数来说太大了。

Java的long涵盖范围更广的-2 ^ 63到2 ^ 63-1。其中包括您的价值,因此建议使用Long.valueOf(colorStr, 16)并切换为使用long。 (当您使用的值超出整数值范围时,会出现一个建议。)

在我看来,你知道,但万一你没有;如果0x是字符串值的一部分,则应将{{1}}删除,因为如果保留,则会产生无效的格式异常。

答案 1 :(得分:1)

您的字符串对于已签名的int来说太大了 - 它们从-0x80000000转到0x7FFFFFFF。尝试:

int i = (int) Long.parseLong(colorStr.substring(2), 16);

这会导致负int,这可能不是您想要的。 (使用颜色时,使用红色,绿色,蓝色和alpha分量的元组值可能更方便。)

valueOf()parseInt() / parseLong()都不会识别0x前缀,您需要摆脱它。