将基数10转换为基数16

时间:2016-06-24 10:12:32

标签: java

我必须创建一个类,将基数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);



    }

}

3 个答案:

答案 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)

  • 定义一个基数为16的数组。 (阵列)
  • 将提醒存储在列表中。要获取提醒,请使用modulo-operator(%)。注意:如果提醒大于9,那么我们使用字符(10 - A,11 - B ......)。为此我们在数组中存储了16个数字。我们使用那个数组。
  • 然后数字=数字/ 16
  • 重复相同的事情,直到数字等于零
  • 然后以相反的顺序打印列表或存储在stringbuffer中并以字符串形式返回

检查以下代码。

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)