进制转换

2022-10-30 15:46:12 浏览数 (1)

题目:

思路:

首先我们要确定进行转换的数的可能性为三种,即负数,正数与0;

      其次十进制以上的转化情况。例:11进制中,10用A表示,

然后最后考虑到的是获取进制数的顺序

代码示例:

import java.util.Stack;

public class Solution4 {

    public static void main(String[] args) {

        int M = 7, N = 2;

        System.out.println(solve(M, N));

    }

    /**

     * 进制转换

     * 原理:

     * 首先我们要确定进行转换的数的可能性为三种,即负数,正数与0;

     * 其次十进制以上的转化情况。例:11进制中,10用A表示

     *

     * @param M int整型 给定整数

     * @param N int整型 转换到的进制

     * @return string字符串

     */

    public static String solve(int M, int N) {

        if (M == 0)

            return "0";

        StringBuffer str = new StringBuffer();

        Stack<Integer> stack = new Stack<Integer>();

        if (M < 0) {

            str.append("-");

            M = Math.abs(M);

        }

        while (M > 0) {

            stack.push(M % N);

            M = M / N;

        }

        int temp;

        while (!stack.isEmpty()) {

            temp = stack.pop();

            if (temp > 9) {

                str.append((char) (temp - 10 'A'));

            } else {

                str.append(temp);

            }

        }

        return String.valueOf(str);

    }

}

0 人点赞