将数字转换为用户选择的基数

时间:2015-10-11 03:44:59

标签: java base

我想创建一个包含数字和基本系统的东西,这样它就可以将数字转换为从基数2到基数16的不同基数中的数字。

E.g。 stdin将是67和2,这意味着用户希望程序将数字67更改为二进制形式。 stdout将是1000010

所以我首先制作了以下代码。该程序接收一个数字并将其转换为二进制格式。

public class ChangeofBase { 
    public static void main(String[] args) { 
        // read in the command-line argument
        int n = Integer.parseInt(args[0]); 
        // set v to the largest power of two that is <= n
        int v = 1; 
        while (v <= n/2) {
            v *= 2;
        }
        // check for presence of powers of 2 in n, from largest to smallest
        while (v > 0) {
            // v is not present in n 
            if (n < v) {
                System.out.print(0);
            }

            // v is present in n, so remove v from n
            else {
                System.out.print(1);
                n -= v;
            }
            // next smallest power of 2
            v /= 2;
        }
        System.out.println();
    }
}

如何修改上述代码以执行以下功能?

接收一个n和一个基数k,以便将n转换为基数k中的数字

再次,k必须介于2和16之间.Base 2和base 16.二进制和十六进制。谢谢!

编辑:我想在不使用内置函数的情况下执行此操作。硬编码
编辑2:我是Java新手。所以我想坚持基本的东西,比如定义变量,while循环和foor循环,if-else和打印。并解析命令行args。我相信这就是我们所需要的所有这个程序,但如果我错了就纠正我

2 个答案:

答案 0 :(得分:1)

您可以使用Integer.toString(int i, int radix).

答案 1 :(得分:0)

除了Java内置函数之外,您可以在Java中使用简单的除法和模运算来实现这一目标。

public class IntBaseConverter {
public static void main(String[] args) {
    convert(Integer.parseInt(args[0]), Integer.parseInt(args[1]));
}

public static void convert(int decimalValue, int base) {
    String result = "";
    while (decimalValue >= base) {
        result = decimalValue % base + result;
        decimalValue /= base;
    }
    result = decimalValue + result;

    System.out.println(result);
}
}