0

为什么我得到一个“无效的十六进制文字数字”

int number = 0xgetInt();

而不是为了这个

int number = 0x555;
4

4 回答 4

2

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

于 2013-10-19T01:23:04.130 回答
1

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

你可能想要

int number = Integer.parseInt( getNext(), 16)
于 2013-10-19T01:24:49.557 回答
0

十六进制”或十六进制数只能包含数字 0-9 和字符 af(或 AF)。在 java 中,以“0x”为前缀的数字向编译器表明它是一个十六进制整数文字0xgetInt()因此被解释为一个整数值,但它包含无效的十六进制数字。0x555另一方面,是一个有效的十六进制值,对应于十进制 1365。如果0xgetInt()应该是方法名称,则必须更改它以摆脱“0x”前缀以避免此问题。

于 2013-10-19T01:22:37.083 回答
0

因为您不能以数字开头的 Java 标识符,并且因为数字可以以开头0x但不能以getInt. 在词汇级别上,它不是有效的 Java。

目前尚不清楚您要在这里做什么。如果您尝试将 getInt() 的结果转换为十六进制,那么您会发现错误的树,它是二进制的,您需要将其转换为StringwithInteger.toString(getInt(), 16).

于 2013-10-19T01:32:00.213 回答