这是一个有效的十六进制值吗?
我正在读取一系列十六进制值,使用代码读取值`0x03B6:
Integer.parseInt("0x03B6",16);
导致异常:
Exception in thread "main" java.lang.NumberFormatException: For input string: "0x03B6"
但是,如果我删除了值开头的 0x,结果将正确转换为 HEX:
Integer.parseInt("03B6",16)
是0X表示它是十六进制值的约定吗?03B6是有效的十六进制吗?
使用十六进制计算器 - https://www.calculator.net/hex-calculator.html也无法识别0x03B6 但可以识别03B6
回答
十六进制数只是03B6. 十六进制数字是 0-9 和 AF,这就是为什么在输入“x”时会出现异常的原因。
在许多语言中,您可以通过添加0x前缀来编写十六进制常量。这告诉编译器后面的数字应该以基数 16 而不是基数 10 来解释。 10是 10,0x10是 16。像 C 这样的一些语言也支持八进制(010is 8),而其他一些语言支持二进制(0b10is 2)。C 是我所知道的最早使用这种 0 前缀思想的语言。
parseInt但是,该方法仅解析数字,因此您必须只提供03B6,并使用单独的参数来表示基数为 16。