数字总和 BigInteger

Sum Of Digits BigInteger

我试图找到 BigInteger 的数字总和并找到了这段代码。

BigInteger big = BigInteger.valueOf(2).pow(1000);
String digits = big.toString();
int sum = 0;

for(int i = 0; i < digits.length(); i++) {
    int digit = (int) (digits.charAt(i) - '0');
    sum = sum + digit;
}

System.out.println(sum);

我不明白为什么要在代码的第 6 行添加 - '0'

int digit = (int) (digits.charAt(i) - '0');

如果我删除那部分,它会给我一个错误的答案。

例如,没有 - '0' 的 16 的数字总和给出 103 而不是 7 作为答案。

那么,谁能解释一下代码中那部分的重要性?

感谢任何帮助。

代码 digits.charAt(i) 为您提供了该数字的 ASCII 代码。所以如果你看一个 ASCII table,你会看到字符 7 的值是 55 而字符 0 的值是 48。如果你从中减去 0 7,你会得到 7,这就是你要找的数字。

例如,如果您从 digits.getCharAt(i) 中获取 '5'

'5' - '0' = ?

根据ASCII table可以翻译为:

53 - 48

这是 5,这就是您要查找的结果