由于以下代码行,我收到错误消息:
int x = color(Integer.parseInt("ffffffde",16));
我觉得可能是因为它是一个负值
关于为什么或如何或如何解决它的任何想法?
编辑:
抱歉,没有包含实际错误。这是:
Exception in thread "Animation Thread" java.lang.NumberFormatException: For input string: "ffffffde" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source)
编辑 2:
值(“ffffffde”)由以下代码创建:
Integer.toHexString(int_val);
编辑 3: 原来这是一个已知错误 (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4215269) 虽然您可以将整数转换为十六进制字符串,但如果它们是负数,则不能将它们转换回来!!
最佳答案
ffffffde
大于整数最大值
Java int is 32 bit signed type ranges from –2,147,483,648 to 2,147,483,647.
ffffffde = 4,294,967,262
编辑
您使用 Integer.toHexString(int_val)
将 int 转换为十六进制字符串。来自该方法的文档:
Returns a string representation of the integer argument as an unsigned integer in base 16.
但是 int
是一个signed 类型。
使用
int value = new BigInteger("ffffffde", 16).intValue();
将其取回为负值。
关于java - 在 Java 中从十六进制转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10681312/