Java: Как преобразовать IP-адрес в двоичный и шестнадцатеричный - PullRequest
0 голосов
/ 06 декабря 2018

Я создаю конвертер IP.Вам нужно будет ввести IP-адрес со сканером в формате String.

Например: String = "192.168.10.1"

Как преобразовать строку в двоичный с помощьюметод разделения?

Мой конвертер еще:

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

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

Один из эффективных способов сделать это, взяв ваш ввод в виде строки (которую вы уже упомянули в первой строке вопроса), как показано ниже:

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.");
    }
}

}

0 голосов
/ 06 декабря 2018

Разделить ввод по '.'и преобразовать каждую часть в двоичную и шестнадцатеричную

            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());
0 голосов
/ 06 декабря 2018

Просто используйте zahl.Split("."); и используйте метод .toBinaryString() для отдельных частей.

...