-2

我必须将以点分隔的十进制格式给出的 32 位 IP 地址(如“172.168.100.23”)转换为 32 位连续二进制数的字符串,如“10101100101010000110010000010111”。然后我必须分开 7 个 MSB,即 1010110 和 25 位,即 0101010000110010000010111。我该怎么办?是否有任何内置功能可以帮助我解决问题?

我正在输入字符串

System.out.println("Enter an IP address");
String ip=input.next();

然后将其转换为子字符串

String delimiter="\\.";
String[] array=ip.split(delimiter);
String s4=array[0];
String s3=array[1];
String s2=array[2];
String s1=array[3];

然后我将每个字符串转换为整数

int num4=Integer.parseInt(s4);
int num3=Integer.parseInt(s3);
int num2=Integer.parseInt(s2);
int num1=Integer.parseInt(s1);

在此之后,我必须将每个数字转换为其二进制并用 0 填充 msb,如果数字的二进制小于 8 位,如(10111)它可能是(00010111)以完成 32 位。之后我必须组合每个数字的所有单独位,最后我必须将 7 个 MSB 与其他 25 个位分开。请帮我完成这个问题

4

1 回答 1

0

你可以做的是使用 InetAddress

String ipAddress = "192.168.16.142";
InetAddress i = InetAddress.getByName(ipAddress); 

for (Byte b : i.getAddress()) {
        Integer.toBinaryString(b); // Get your binary string 1110011101010110
}
于 2013-10-05T18:44:10.113 回答