繁体   English   中英

Integer.valueOf() 无效整数

[英]Integer.valueOf() invalid int

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

但是我在使用时遇到错误:

Integer.valueOf(colorStr,16);

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

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

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

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

您的字符串对于带符号的 int 来说太大了 - 它们从-0x800000000x7FFFFFFF 尝试:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM