在Java中,我如何获取输入IP地址并将其转换为特定位

时间:2015-01-28 19:17:27

标签: java

基本上我需要的是一种从用户输入其ip地址的输入的方法,然后输出每个部分的后续8位,以确定哪些位是打开和关闭的。

我目前让用户在每个部分输入他们的IP地址,如下所示:

System.out.print("Please input the first set in your IP Address: ");
strHolder = kb.next();
first = Integer.parseInt(strHolder);

System.out.print("Please input the second set in your IP Address: ");
strHolder = kb.next();
second = Integer.parseInt(strHolder);

System.out.print("Please input the third set in your IP Address: ");
strHolder = kb.next();
third = Integer.parseInt(strHolder);

System.out.print("Please input the fourth set in your IP Address: ");
strHolder = kb.next();
fourth = Integer.parseInt(strHolder);

我对Java不是很有经验。我在大学里上过一堂课,其中大部分时间我都不得不谷歌怎么做,但我没有发现任何关于位过程的事情。

3 个答案:

答案 0 :(得分:3)

String s = Integer.toBinaryString(first);

答案 1 :(得分:0)

如果输入类似于:123.124.125.126(一个字符串),则可以使String [] strListHolder = strHolder.split(“。”)并对其进行操作。

Integer[] holder = new Integer[strListHolder.count];
for(int i = 0; i < strListHolder.count; i++){
    holder[i] = Integer.parseInt(strListHolder[i]);
}

这就是你想要的吗? @编辑 之后,您可以检查每个部分的第n位:

if ((holder[i] & (1 << n)) != 0)
{
   // The bit was set
}

答案 2 :(得分:0)

IP地址(IPV4)的格式为xxx.xxx.xxx.xxx

假设输入是字符串格式。 首先使用字符串类中的split函数分隔4个部分。 你可以把各个部分和&amp;它们用255来获取被设置的位并使用相同的信息来找到未设置的位。

String[] str = ip.split(".");
for (String each : str) {
    System.out.println(Integer.parseInt(each) & 255);  // this would print the set bits just convert it to binary
}