我知道parseInt
方法用于将字符串转换为int,但我不知道如何。我明白,如果你说:
System.out.println(Integer.parseInt("52", 10));
会给你 52 以 10 为基数。我不知道的是,如果你说用 15 替换基数 10,它是如何计算的。从一些研究中,我发现有人说你必须使用ASCII值。如果有帮助,我正在尝试能够在纸上单独解决这个问题,而无需更多代码的工作。
你是对的,数字表示基数。你说的不对
Integer.parseInt("52", 10)
会给你 52 以 10 为基数。
这实际上会解析数字 52,就好像它在 10 的基数中一样。 据我们所知,52 可能是基数 6。
例如:
Integer.parseInt("101", 2);
是说解析二进制(基数 2(数字一零一。它并不是说将一百零一解析为二进制。这将返回以 10 为基数的数字 5。
返回的任何数字都是标准整数,如果您尝试打印,它将以 10 为基数。
值得注意的是,如果您尝试解析一个在该基数中可能存在的数字,例如:
Integer.parseInt("599", 2);
然后你会得到一个例外。
您正在解析的字符串可能位于您提供的特定基数中,以解析为 int。 int 是一个数值,本身没有特定的基数。
例子
Integer.parseInt("52", 10) returns 52
Integer.parseInt("52", 8) returns the numerical value 42 (8*5+2)
Integer.parseInt("A2", 16) returns the base 10 value 162
parseInt(String s, int radix)
方法的工作方式如下:
- 选中
radix
参数。它应该在范围 2 - 36 - 字符串的每个字符都经过解析并验证为有效数字(在基数定义的范围内(
- 结果乘以
radix
并增量添加到结果变量中 - 返回结果变量
算法非常简单。工作的一个重要部分是由验证数字是否有效的部分完成的。
围绕这段代码,有一些检查最终会导致NumberFormatException
,例如在数字之前存在有效符号(+
或-
(,存在前导零,溢出等。