有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

无预定义方法的二进制到十六进制(JAVA)

我正在寻找一种将二进制数转换为六位小数(JAVA)的方法。问题是,它不能用预定义的方法来完成,我只是不知道怎么做。我试过一些方法,但六位小数中包含了字符,这让我很不舒服

提前谢谢


共 (4) 个答案

  1. # 1 楼答案

    从我的库中尝试此函数。不使用此函数进行任何计算。只需比较字符串,就可以将任意多的二进制转换为十六进制。只要限制字符串的长度

    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;
    }
    
  2. # 2 楼答案

    根据您的要求,首先您必须将二进制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. # 3 楼答案

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

    这是一个二进制数:

    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  
    
  4. # 4 楼答案

    这里的确切问题是什么

    使用整数。要转换的toHexString(num)