JAVA:无效的文字十六进制数

时间:2013-10-19 01:19:22

标签: java

为什么我收到此

的“无效的十六进制文字数”
int number = 0xgetInt();

而不是这个

int number = 0x555;

4 个答案:

答案 0 :(得分:2)

getInt()是函数调用,而不是"字面数字"正如例外所说。我没有理由尝试将int转换为此特定位置的十六进制,因为它无论如何都存储为变量。

答案 1 :(得分:1)

0x是文字的开头,并在编译时转换为适当的值,其中getInt()在运行时进行评估。

你可能想要

int number = Integer.parseInt( getNext(), 16)

答案 2 :(得分:0)

"hex" or hexadecimal number只能包含数字0-9和字符a-f(或A-F)。在java中,在数字前加上“0x”indicates to the compiler that it's a hexadecimal integer literal。因此0xgetInt()被解释为整数值,但它包含无效的十六进制数字。另一方面,0x555valid hex value that corresponds to 1365 decimal。如果0xgetInt()应该是方法名称,则必须更改它以删除“0x”前缀以避免此问题。

答案 3 :(得分:0)

因为您无法使用数字启动Java标识符,并且数字可以以0x开头,但无法继续使用getInt。它在词汇层面上不是有效的Java。

目前还不清楚你在这里要做什么。如果你试图将getInt()的结果转换为十六进制,那么你正在咆哮错误的树,它是二进制的,你需要将它转换为String Integer.toString(getInt(), 16).