请向我解释这个 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" 的数值。
//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" 的数值。