java - 在 Java 中从十六进制转换为整数

标签 java hex int

由于以下代码行,我收到错误消息:

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/

相关文章:

java - 检查数据库中是否有表

java.lang.Long 和 scala.Long

javascript - 为什么 0x80000000 和 0x80000000 比 0 低

javascript - 将具有 IEEE-754 double 十六进制表示的字符串转换为 JavaScript 数字变量

c - 如何将 Hex 数组单个元素转换为 int

java - 如何使我的代码显示一定数量的行(就像它一样)但向后显示

java - hibernate_sequence 序列名的重复条目

java - 在 WildFly 8.1 上运行 Jersey2 REST 客户端时出现问题

javascript - 将此数据集中的值从字符串转换为 int 的最佳方法是什么

actionscript-3 - 为什么我不能在 OS X Lion x64 上的 Flash Player 11 中拥有 120,000x120,000 像素的位图数据?