这是一个有效的十六进制值吗?
Is this a valid Hex value?
我正在读取一系列十六进制值,使用代码读取值 `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 和 A-F,这就是为什么在输入 'x' 时出现异常的原因。
在许多语言中,您可以通过添加 0x
前缀以十六进制编写常量。这告诉编译器应该以 16 进制而不是 10 进制解释以下数字。10
是 10,而 0x10
是 16。某些语言如 C 也支持八进制(010
是8),还有一些支持二进制(0b10
是2)。 C 是我所知道的最早使用这种 0 前缀思想的语言。
然而,parseInt
方法仅解析数字,因此您只需提供 03B6
,并使用单独的参数来指示基数 16。
通常,它们在编译时被解释。您需要使用 Integer.decode
。如果省略 0x
前缀,则必须指定 radix
并使用 parseInt
.
要使用这些字符串实时解码,请执行以下操作。
String[] vals = { "0xF", "#111", "0x17C" };
for (String v : vals) {
System.out.println(v + " -> " + Integer.decode(v));
}
打印
0xF -> 15
#111 -> 273
0x17C -> 380
此外,请注意仅以 0
为前缀的数字将解码为八进制。
我正在读取一系列十六进制值,使用代码读取值 `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 和 A-F,这就是为什么在输入 'x' 时出现异常的原因。
在许多语言中,您可以通过添加 0x
前缀以十六进制编写常量。这告诉编译器应该以 16 进制而不是 10 进制解释以下数字。10
是 10,而 0x10
是 16。某些语言如 C 也支持八进制(010
是8),还有一些支持二进制(0b10
是2)。 C 是我所知道的最早使用这种 0 前缀思想的语言。
然而,parseInt
方法仅解析数字,因此您只需提供 03B6
,并使用单独的参数来指示基数 16。
通常,它们在编译时被解释。您需要使用 Integer.decode
。如果省略 0x
前缀,则必须指定 radix
并使用 parseInt
.
要使用这些字符串实时解码,请执行以下操作。
String[] vals = { "0xF", "#111", "0x17C" };
for (String v : vals) {
System.out.println(v + " -> " + Integer.decode(v));
}
打印
0xF -> 15
#111 -> 273
0x17C -> 380
此外,请注意仅以 0
为前缀的数字将解码为八进制。