我必须创建一个类,将基数10中的给定数字转换为基数16.这是我的代码到目前为止工作但是我必须手动做算法,任何人都可以指导我如何手动完成它?谢谢
import com.sun.org.apache.xpath.internal.SourceTree;
import java.util.LinkedList;
import java.util.Scanner;
/**
* Created by TudorV on 24/06/2016.
*/
public class Main {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int number;
System.out.println("Enter a number: ");
number = scn.nextInt();
// String string = scn.nextLine();
System.out.println("Your number is: " + number);
String output ="";
output = Integer.toString(number, 16);
System.out.println("output is: " + output);
}
}
答案 0 :(得分:0)
第1步:将您的号码除以16 (exp.: 35 / 16 = 2.1875)
。
步骤2:减去结果(2.1875 - 2 = 0.1875)
的整数。
第3步:乘以16 (0.1875 * 16 = 3)
。 (余数)
步骤4:通过将第一个结果的整数除以16 (2 / 16 = 0.125)
来重复步骤1。
步骤5:重复步骤2-4,直到整数小于16并且除以16为止。
注意每个余数(3, 2)
。在(2, 3)
附近翻转订单。那是你的结果:0x23
答案 1 :(得分:0)
检查以下代码。
public static String convertIt(int number) {
String[] array = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F" }; //Define an array which has base 16 number
List<String> l = new ArrayList<String>(); //list to store reminder
StringBuffer strB = new StringBuffer();
while (number != 0) {
l.add(array[number%16]); //store reminder -- NOTE use array
number = number / 16; //change number
}
for (int i = l.size()-1; i > -1; i--) {
strB.append(l.get(i));
}
return strB.toString();
}
答案 2 :(得分:0)
与将十进制转换为二进制的方式类似。 (或任何其他基地) 记住十进制数与基数10的关系:
例如:123
1 * 10 ^ 2 + 2 * 10 ^1 + 3 * 10 ^ 0
100 + 20 + 3 = 123
要将其转换为16,它应该看起来像
7 * 16^1 + 11 * 16^0 = 123
因此它应该表示为7 11
查看以下python代码:
def convert_base(number, base):
result = []
while number > 0:
result.append(number % base)
number = number / base
result.reverse()
return result
print convert_base(17, 16)