请向我解释这个 method/code 是如何执行的

Please explain to me how this method/code is carry out

//x2ten Method: Convert everything to base 10
public static int x2ten(String s, int base){    
    s = s.toUpperCase();
    int ret = 0;
    //int multiplier = 1;
    for (int i=0; i<s.length(); i++){
        char c = s.charAt(i);
        int cInt = c -'0';
        
        if ('c' >=0 && c <='9'){
            cInt = c -'0';
        }
        else if(c >='A' && c <= 'Z'){
            cInt = c - 'A' +10;
        }       
        ret = ret * base + cInt;
    }
    return ret;
}

有人可以向我解释这段代码是如何工作的吗???一行一行

int cInt = c -'0';

cInt = c - 'A' +10;

我特别不明白这些行是如何执行的。 “-'0'”或“-'A'”等的影响是什么

您询问的两个特定行,即

int cInt = c -'0';
cInt = c - 'A' +10;

是您代码中唯一棘手的行。一旦了解了它们的作用,您就可以很好地理解整个事情。

这两行都将表示数字的字符转换为该数字的数值。因此,字符 '0' 被翻译成 0,字符 '1' 被翻译成 1,等等。这是通过从字符的数字代码中减去数字代码零来完成的。由于数字字符的数字代码在 UNICODE 中是连续的,因此相减得到所需的结果。

第二行也一样,除了十位以上的数字,用字母'A''B''C'等表示。 'A' 表示 10'B' 表示 11,等等。同样,字母代码是连续的,因此减去字符 'A' 的代码并偏移十(因为'A' 表示十的数字)以 11 及以上为基数生成 "digit" 的数值。