java 十六进制到 int 的转换 - 必须删除 0X 吗?

Posted

技术标签:

【中文标题】java 十六进制到 int 的转换 - 必须删除 0X 吗?【英文标题】:java hexadecimal to int conversion - have to remove 0X ? 【发布时间】:2013-10-03 03:51:44 【问题描述】:

我有一个包含许多十六进制数字的文件(例如 - 0X3B4 )。我试图解析这个文件,将这些数字分配给整数,但似乎没有让 Integer.parseInt 工作。

   int testint = Integer.parseInt("3B4",16);  <- WORKS

   int testint = Integer.parseInt("0X3B4",16);

给出错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "0x3b4"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

将值 0XB4 分配给 int 的正确方法是什么?

我是否摆脱 0X - 以这种方式表示十六进制编号并不罕见......

【问题讨论】:

【参考方案1】:

你可以的

int hex = Integer.decode("0x3b4");

你说得对,parseInt 和 parseLong 不会接受 0x 或 0X

【讨论】:

谢谢。这在 java 1.4.1 中也不起作用,不过我可以在更高版本中使用它。 @Nik 我怀疑 1.4.1 现在已经十岁了。 ;)

以上是关于java 十六进制到 int 的转换 - 必须删除 0X 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何简化这种二进制到java类型的代码?

Java将int转换为十六进制并再次转换回来

JAVA:string类型转换int(16进制)

java如何将十六进制0xFF5100A5转换为无符号int值,貌似java不支持无符号数据?

在java中 如何将得到的String转换为Short型 急。。

将 int 转换为 Java 中的二进制字符串表示形式?