【问题标题】:binary to hexa decimal without predefined method (JAVA)没有预定义方法的二进制到十六进制(JAVA)
【发布时间】:2016-12-16 10:26:42
【问题描述】:

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

提前致谢!

【问题讨论】:

  • 我忘了说我用输入扫描仪试过了
  • 我们不是来做你的工作的!我们在这里帮助您解决确切的问题。因此,请向我们展示您的代码并告诉我们什么不起作用。
  • 欢迎来到 Stackoverflow。请阅读这些链接以改善您的问题:Tour | How to ask | Minimal, Complete and Verifiable Example。如前所述,展示您的代码和努力非常重要,因此人们可以根据它来帮助您,或者给您提供另一种方法。

标签: java methods


【解决方案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  

【讨论】:

    【解决方案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】:

    这里的确切问题或问题是什么?

    使用 Integer.toHexString(num) 进行转换

    【讨论】:

    • 不能使用这样的预定义方法
    【解决方案4】:

    从我的库中试试这个功能。您无需使用此函数进行任何计算。只有字符串比较,您可以根据需要将尽可能多的二进制转换为十六进制。只要限制字符串的长度即可。

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 2015-06-15
      • 2014-10-30
      • 2014-07-15
      • 2012-11-20
      • 2013-02-21
      • 2018-11-30
      • 2019-03-11
      • 2020-02-09
      相关资源
      最近更新 更多