为什么我得到一个“无效的十六进制文字数字”
int number = 0xgetInt();
而不是为了这个
int number = 0x555;
getInt()
是一个函数调用,而不是例外所说的“字面数字”。没有理由尝试int
在这个特定位置将其转换为十六进制,因为它无论如何都存储为变量。
0x
是文字的开始,并在编译时转换为适当的值,其中 asgetInt()
在运行时进行评估。
你可能想要
int number = Integer.parseInt( getNext(), 16)
“十六进制”或十六进制数只能包含数字 0-9 和字符 af(或 AF)。在 java 中,以“0x”为前缀的数字向编译器表明它是一个十六进制整数文字。0xgetInt()
因此被解释为一个整数值,但它包含无效的十六进制数字。0x555
另一方面,是一个有效的十六进制值,对应于十进制 1365。如果0xgetInt()
应该是方法名称,则必须更改它以摆脱“0x”前缀以避免此问题。
因为您不能以数字开头的 Java 标识符,并且因为数字可以以开头0x
但不能以getInt
. 在词汇级别上,它不是有效的 Java。
目前尚不清楚您要在这里做什么。如果您尝试将 getInt() 的结果转换为十六进制,那么您会发现错误的树,它是二进制的,您需要将其转换为String
withInteger.toString(getInt(), 16).