为什么我收到此
的“无效的十六进制文字数”int number = 0xgetInt();
而不是这个
int number = 0x555;
答案 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()
被解释为整数值,但它包含无效的十六进制数字。另一方面,0x555
是valid hex value that corresponds to 1365 decimal。如果0xgetInt()
应该是方法名称,则必须更改它以删除“0x”前缀以避免此问题。
答案 3 :(得分:0)
因为您无法使用数字启动Java标识符,并且数字可以以0x
开头,但无法继续使用getInt
。它在词汇层面上不是有效的Java。
目前还不清楚你在这里要做什么。如果你试图将getInt()的结果转换为十六进制,那么你正在咆哮错误的树,它是二进制的,你需要将它转换为String
Integer.toString(getInt(), 16).