//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‘”等的影响是什么?
发布于 2015-02-27 03:53:05
你问过的两条具体的行,即
int cInt =c -'0';cInt =c- 'A‘+10;
是代码中唯一棘手的行。一旦你理解了他们的所作所为,你就能很好地理解整个事情。
这两行都将表示数字的字符转换为该数字的数字值。因此,字符'0'被翻译成0,字符'1'被翻译成1,等等。这是通过从字符的数字代码中减去零的数字代码来完成的。由于数字字符的数字代码在UNICODE中是连续的,因此减法将产生所需的结果。
第二行也是如此,但十以上的数字除外,这些数字用字母'A'、'B'、'C'等表示。'A'的意思是10,'B'的意思是11等等,字母代码是连续的,因此减去字符'A'的代码并偏移10(因为'A'代表10的数字),就会得到基数11及以上的“数字”的数字值。
https://stackoverflow.com/questions/28757183
复制相似问题