Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试从 r、g、b 值创建颜色值,并添加 alpha 字节以创建颜色 int。
但我在使用时遇到错误:
Integer.valueOf(colorStr,16);
colorStr是我构建的字符串,现在向我发送错误的值是"0XFF2f6b55" 它向我发送了无效的 int。
colorStr
"0XFF2f6b55"
Java 的整数涵盖从 -2^31 到 2^31-1 (2147483647) 的值。您的值是十进制的 (4281297749),这对于 java 的整数来说太大了。
Java 的long涵盖了更高的范围,从 -2^63 到 2^63-1。其中包括您的价值,因此建议使用Long.valueOf(colorStr, 16)并切换到使用多头。(当您使用的值超出整数值范围时,建议发挥作用)。
Long.valueOf(colorStr, 16)
在我看来,您似乎知道,但万一您不知道;如果它是字符串值的一部分,0x则应将其删除,因为如果留在其中,它将给出无效的格式异常。
0x
你的字符串对于一个有符号的 int 来说太大了——它们从-0x80000000到0x7FFFFFFF。尝试:
-0x80000000
0x7FFFFFFF
int i = (int) Long.parseLong(colorStr.substring(2), 16);
这将导致负数int,这可能不是您想要的。(使用颜色时,使用红色、绿色、蓝色和 alpha 分量的值元组可能更方便。)
int
valueOf()或parseInt()/都parseLong()不会识别0x前缀,您需要摆脱它。
valueOf()
parseInt()
parseLong()