首页 > 代码库 > 10进制转换成8进制

10进制转换成8进制

package cast;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

public class Cast {
    //测试
    public static void main(String[] args) {
        int a = Cast.castNum(100);
        System.out.println(a);
        
    }
    
    //10进制转换成8进制
    public static int castNum(int key){
        List<Integer> lists = new LinkedList<Integer>();
        int num = 0;
        boolean flag = true;
        
        if(key<0){
            return -1;//若是负值则返回-1
        }else if(key<8){//若是在0-8之间直接返回当前数
            return key;
        }
        
        while(flag){//若是大于等于8则进行转换
            num = key%8;//取余
            lists.add(num);//添加进集合
            key = key/8;//取整数商
            if(key==0){//当k=0时,跳出循环
                flag = false;
            }
        }
        
        if(!flag){//跳出循环就进行转换
            Collections.reverse(lists);//集合反转
            StringBuffer sb = new StringBuffer();
            for(int l:lists){
                sb.append(l);//转换成StringBuffer
            }
            key = Integer.parseInt(new String(sb));//转换成int型
        }
        return key;
    }

}

10进制转换成8进制