首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请向我解释一下这个方法/代码是如何执行的。

请向我解释一下这个方法/代码是如何执行的。
EN

Stack Overflow用户
提问于 2015-02-27 03:46:30
回答 1查看 59关注 0票数 2
代码语言:javascript
复制
//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‘”等的影响是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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及以上的“数字”的数字值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28757183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档