没有预定义方法的二进制到十六进制小数(JAVA)

时间:2016-12-16 10:26:42

标签: java methods

我正在寻找一种将二进制数转换为十六进制数(JAVA)的方法。问题是它不能用预定义的方法完成,我只是不知道该怎么做。我已经尝试了一些东西,但它让我失去了六位小数包括字符。

提前感谢!

4 个答案:

答案 0 :(得分:1)

这真是一个糟糕的问题。你应该解释你的想法并展示你迄今为止尝试过的代码。

所以这里是二进制数:

0101111010110010

将其分成四位组(一位是二进制数字,即1或0):

0101 1110 1011 0010

现在有趣的是,每组四位的最大值为....

1111 = 8 + 4 + 2 + 1 = 15
那是响铃吗?这是'数字'在hexadecimal中:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, A, B, C, D, E, F

单个十六进制数字的最大值是什么?

15

这意味着您可以简单地将每组四位转换为十六进制数字:

0101 1110 1011 0010

4+1 8+4+2 8+2+1 2

5    14   11   2

5    E    B    2

5EB2  

答案 1 :(得分:0)

这里的确切问题是什么?

使用Integer.toHexString(num)转换

答案 2 :(得分:0)

首先,对于您的要求,您必须将二进制no转换为十进制,然后转换为十六进制。所以请尝试这个程序,它可以按照你的要求工作:

import java.util.Scanner;

public class BinaryToHexa
{
    public static void main(String args[])
    {
        int binnum, rem;
        String hexdecnum="";
        int decnum=0;            

        char hex[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        Scanner scan = new Scanner(System.in);

        System.out.print("Enter Binary Number : ");
        binnum = scan.nextInt();        

        // converting the number in decimal format
        int i=0;      

        while(binnum>0)
        {
            rem = binnum%10;
            binnum=binnum/10;
            decnum = decnum + (int)(rem*Math.pow(2,i));
            i++;
        }     

        // converting the number in hexadecimal format
        while(decnum>0)
        {
            rem = decnum%16;
            hexdecnum = hex[rem] + hexdecnum;
            decnum = decnum/16;
        }

        System.out.print("Equivalent Hexadecimal Value is :\n");
        System.out.print(hexdecnum);

    }
}

如果您有任何疑问,请告诉我。

...谢谢

答案 3 :(得分:0)

从我的图书馆中试用此功能。您不使用此功能进行任何计算。只有字符串比较,您可以根据需要将二进制转换为十六进制。只要限制一个字符串可以有多长。

// "Copyright Notice", please do not remove.
// Written by Kevin Ng
// The full tutorial on this subject can be found @ http://kevinhng86.iblog.website or http://programming.world.edu.
// This source code file is a part of Kevin Ng's Z library.
// This source code is licensed under CCDL-1.0  A copy of CDDL1.0 can be found at https://opensource.org/licenses/CDDL-1.0

public static String binhexZ(String input)
{
    String map = "0000,0,0001,1,0010,2,0011,3,0100,4,0101,5,0110,6,0111,7,1000,8,1001,9,1010,A,1011,B,1100,C,1101,D,1110,E,1111,F";
    String output = "";
    int i = 0;

    while (input.length() % 4 != 0){
        input = "0" + input;    
    }

    while (i < input.length()){
        output += map.charAt(map.indexOf(input.substring(i, i + 4)) + 5);
        i = i + 4;
    }

    output = output.replaceAll("^0+", "");
    output = output.length() < 1? "0" : output;

    return output;
}