【问题标题】:Java: How to convert ip address to binary and hexJava:如何将 IP 地址转换为二进制和十六进制
【发布时间】:2019-05-07 21:26:49
【问题描述】:

我正在创建一个 IP 转换器。 您必须使用扫描仪以字符串格式输入 IP 地址。

例如:字符串 = "192.168.10.1"

如何使用 split 方法将字符串转换为二进制?

我的转换器还没有:

import java.util.Scanner; 

public class Adapt {
    public static void main(String[] args){
        int zahl;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Eingabe Zahl: ");
        zahl = scanner.nextInt();
        if (zahl > 0 && zahl <= 255) {
             String hex = Integer.toHexString(zahl);         
             String bin = Integer.toBinaryString(zahl);       
             System.out.println("Hex: " + hex);           
             System.out.println("Bin: " + bin);
        } else {
            System.out.println("Eingabe ungültig, nur Zahlen zwischen 0 - 255 verwenden.");
        }
    }
}

现在如何获取不带点的 IP 地址并将其转换为二进制和十六进制?

输出必须如下所示:1111.1111.1111.1111

【问题讨论】:

    标签: java binary hex converters


    【解决方案1】:

    用 '.' 分割输入并将每个部分转换为二进制和十六进制

                StringBuilder binary = new StringBuilder();
        StringBuilder hexa = new StringBuilder();
    
        Scanner scanner = new Scanner(System.in);
    
        System.out.println("Eingabe Zahl: ");
        String zahl = scanner.nextLine();
    
        String[] ipArray = zahl.split("\\.");
    
        for (int i = 0; i < ipArray.length; i++) {
            int temp = Integer.parseInt(ipArray[i]);
            if (temp > 0 && temp <= 255) {
    
                hexa.append(Integer.toHexString(temp));
                hexa.append('.');
                binary.append(Integer.toBinaryString(temp));
                binary.append('.');
            }
        }
        hexa.deleteCharAt(hexa.length() - 1);
        binary.deleteCharAt(binary.length() - 1);
    
        System.out.println("Hex: " + hexa.toString());
        System.out.println("Bin: " + binary.toString());
    

    【讨论】:

    • 这将离开。在hexabinary 字符串的末尾。
    • @TheJavaGuy-IvanMilosavljević 感谢您的发现 :-) 我修改了我的答案。
    【解决方案2】:

    只需使用zahl.Split("."); 并在单独的部分上使用.toBinaryString() 方法。

    【讨论】:

      【解决方案3】:

      通过将您的输入作为字符串(您已经在问题的第一行中提到)来完成此操作的一种有效方法如下:

      public class adapt {
      public static void main(String[] args) {
          String input = null;
          Scanner scanner = new Scanner(System.in);
      
          System.out.println("Eingabe Zahl: ");
          input = scanner.nextLine();
      
          String hex = "";
          String bin = null;
      
          if (input != null) {
              input = input.replace(".", "");
      
              char[] messChar = input.toCharArray();
              for (int i = 0; i < messChar.length; i++) {
                  hex += Integer.toBinaryString(messChar[i]) + " ";
              }
              bin = Integer.toHexString(Integer.parseInt(input));
      
              System.out.println("Hex: " + hex);
              System.out.println("Bin: " + bin);
          }
          else {
              System.out.println("Eingabe ungültig, nur Zahlen zwischen 0 - 255 verwenden.");
          }
      }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-16
        • 2019-04-23
        • 2020-08-08
        • 1970-01-01
        • 2013-11-13
        • 1970-01-01
        • 2016-07-05
        • 2023-03-05
        相关资源
        最近更新 更多