1

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

但我在使用时遇到错误:

Integer.valueOf(colorStr,16);

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

4

2 回答 2

5

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

Java 的long涵盖了更高的范围,从 -2^63 到 2^63-1。其中包括您的价值,因此建议使用Long.valueOf(colorStr, 16)并切换到使用多头。(当您使用的值超出整数值范围时,建议发挥作用)。

在我看来,您似乎知道,但万一您不知道;如果它是字符串值的一部分,0x则应将其删除,因为如果留在其中,它将给出无效的格式异常。

于 2012-11-23T23:42:16.500 回答
1

你的字符串对于一个有符号的 int 来说太大了——它们从-0x800000000x7FFFFFFF。尝试:

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

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

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

于 2012-11-23T23:41:54.270 回答