将数字转换为用户选择的基数
Converting a number to a user chosen base
我想做一个接受数字和基数系统的东西,这样它将把数字转换成从 2 进制到 16 进制的不同基数的那个数字。
例如stdin 将是 67 和 2,这意味着用户希望程序将数字 67 更改为二进制形式。标准输出将是 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 之间。以 2 为基数和以 16 为基数。二进制和十六进制。谢谢!
编辑:我想在不使用内置函数的情况下执行此操作。硬编码
编辑 2:我是 Java 的新手。所以我想坚持基本的东西,比如定义变量、while 循环和 foor 循环、if-else 和打印。并解析命令行参数。我相信这就是这个程序所需要的,如果我错了请纠正我
您可以使用Integer.toString(int i, int radix).
除了 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);
}
}
我想做一个接受数字和基数系统的东西,这样它将把数字转换成从 2 进制到 16 进制的不同基数的那个数字。
例如stdin 将是 67 和 2,这意味着用户希望程序将数字 67 更改为二进制形式。标准输出将是 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 之间。以 2 为基数和以 16 为基数。二进制和十六进制。谢谢!
编辑:我想在不使用内置函数的情况下执行此操作。硬编码
编辑 2:我是 Java 的新手。所以我想坚持基本的东西,比如定义变量、while 循环和 foor 循环、if-else 和打印。并解析命令行参数。我相信这就是这个程序所需要的,如果我错了请纠正我
您可以使用Integer.toString(int i, int radix).
除了 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);
}
}