1.10进制转16进制     2591转化为16进制数: ... + x2*16^2 + x1*16^1 + x0*16^0  =  2591 同mod16得到: x0 = 2591 % 16 = 15   --->   x0 = 15 同除以16: ... + x2 * 16^1 + x1*16^0 = 161 再次同mod16: x1 = 1 同除以16: ... + x2 * 16^0 = 10 再次mod 16: x2 = 10 除以16: 右边因式 = 0,计算结束 转化后数字为:A1F     2.16进制转10进制     16进制数A1F转化为10进制计算方式:         10*16^2 + 1*16^1 + 15*16^0 = 2560 + 16 + 15 = 2591     写代码过程中,从高位到低位,每两位都可以提取一个16计算,代码如下:     
    public int titleToNumber(String s) {
        int lineNum = 0;
        for(int i = 0;i < s.length();i++){
            int num = s.charAt(i) - '0';
            if(s.charAt(i) > '9'){
                num = s.charAt(i) - 'A'+ 10;
            }
            lineNum = lineNum * 16 + num;
        }
        return lineNum;
    }

 

3.excel列名称计算(10进制转26进制,思想同1)     需注意,excel列名称计算,与普通的进制转化不相同,是从1开始的,并且,也不是满26进1,满26依然是26(Z),27则变为AA(依然是从1开始)     代码:      
    public String convertToTitle(int n) {
        StringBuilder strBuilder = new StringBuilder();
        while(n != 0){
            n--;
            int x = n % 26;
            strBuilder.insert(0,(char)('A' + x));
            n = n / 26;
        }
        return strBuilder.toString();
    }

 4.10进制转化为7进制

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

类似16进制转化,代码如下

public String convertToBase7(int num) {
        boolean flag = num < 0 ? true : false;
        String result = "";
        num = Math.abs(num);
        do{
            result = num%7+""+ result;
            num = num/7;
        }while(num != 0);
        if(flag) result = "-" + result;
        return result;

    }

 

 
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄