进制转换

10进制转换成7进制、16进制、26进制

都是num%x 余数表示转换以后的进制数;num更新成num/x

10进制转换成16进制有补码,难点

1.26进制

class Solution {
    public String convertToTitle(int n) {
        StringBuilder sb=new StringBuilder();
        while(n!=0){
            n--;
            sb.append( (char) (n%26+'A'));
            n=n/26;
        }
        return sb.reverse().toString();
    }
}

2.7进制

class Solution {
    /*10进制转换成别的进制,除以进制数,的余数的相反数就是索要转换的进制数*/
    
    public String convertToBase7(int num) {
        if(num==0){
            return "0";
        }
        
        boolean isNegative=num<0;
        if(isNegative){
            num=-num;
        }
        StringBuilder sb=new StringBuilder();
        while(num>0){
            sb.append(num % 7);
            num/=7;
        }
        String ret=sb.reverse().toString();
        return isNegative?"-"+ret:ret;
    }
}

3.16进制

class Solution {
    /*
   按位与来获取。既然是得到十六进制,那么每次与上0xF(二进制就是1111),
得到一个值,然后数字向右移动4位,这里需要注意的是数字是有符号的,
刚好可以利用Java提供的无符号移动>>>。完美!!!
    */
    public String toHex(int num) {
        if(num==0) return "0";
        char[] map={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
        StringBuilder sb=new StringBuilder();
        while(num!=0){
            sb.append(map[num & 0xF]);
            num= (num>>>4);
        }
        return sb.reverse().toString();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值