java 十进制转七进制或其他进制 (改进)

数字电路课程讲过这种方法,后来忘了,想了好久写出来。

/**
 * 10进制转化7进制
 */
public static String toSeven(int number){
     
    String result="";
    String remain = "";
    while (number>=7){
     
        remain = String.valueOf(number%7);
        number = number/7;
        result = remain + result;
    }
    return String.valueOf(number)+result;
}

领会到了:
代码即数学,这只是一个不断取余的一个小方法,但是技巧十分巧妙。

上边是很久以前的时间2020-03-28 23:20:32

2020-10-30 时间过了大半年的改进版本

其他进制转10进制

思路: 如二进制1010 累乘相加

十进制转其他进制

思路: 累除取余,注意最后一次得到的非0的商也当作余数

/***
 * @param var  deal value 处理的数
 * @param base the base of the converting value 该数要转的进制
 * @return if var=10 base=2 decimal to binary 十进制转二进制 result = 1010
 */
public static String baseConvert(int var,int base){
     
    StringBuilder result = new StringBuilder();
    String remain = "";
    while(var!=0){
     
        remain = String.valueOf(var%base);
        var = var/base;
        result.insert(0,remain);
    }
    return result.toString();
}

/**
 * @param var the base
 * @param baseOfVar the base of var
 * @return the decimal value of var assume var = 1010 baseOfVar=2 return 10
 */
public static int toDecimal(int var, int baseOfVar){
     
    String s = String.valueOf(var);
    int result  = 0;
    int cirTime = 0;
    for (int i=s.length()-1;i>=0;i--){
     
        result+=Integer.parseInt(s.substring(i,i+1))*Math.pow(baseOfVar,cirTime);
        cirTime++;
    }
    return result;
}
public static int toDecimal(String var, int baseOfVar){
     
    int result  = 0;
    int cirTime = 0;
    for (int i=var.length()-1;i>=0;i--){
     
        result+=Integer.parseInt(var.substring(i,i+1))*Math.pow(baseOfVar,cirTime);
        cirTime++;
    }
    return result;
}

你可能感兴趣的:(算法&逻辑&数学,JAVA程序员,算法,leetcode,java)