2016-12-21 10 views
0

Как получить значение подсети от IP-адреса. Например, мы можем сделать это в Python. (Но как насчет Java?)Как получить подсеть от IP в Java

interface = ipaddress.IPv4Interface('11.22.104.0/0.0.0.255') 
value = interface.with_prefixlen 

Вывод значения = 11.22.104.0/24

В принципе, мне нужна функция для преобразования 0.0.0.255 в/24. Благодарю.

Редактировать

-java 7 используется.

ответ

1

С гуава:

int slash = Integer.bitCount(
     ~Ints.fromByteArray(
       InetAddresses.forString("0.0.0.255").getAddress())); 

С Java 8:

int slash = Arrays.stream("0.0.0.255".split("\\.")) 
     .mapToInt(Integer::parseInt) 
     .map(i -> ~i & 0xFF) 
     .map(Integer::bitCount) 
     .sum(); 

С Java 7:

int slash = 0; 
for (String octet : "0.0.0.255".split("\\.")) { 
    slash += Integer.bitCount(~Integer.parseInt(octet) & 0xFF); 
} 

Значение slash будет 24.

+0

Есть ли готовая к использованию библиотека в Java 7? Мое приложение использует Java 7, поэтому приведенный выше код не работает. Извините, что не упоминал Java-версию. – user1841495

+0

@ user1841495 Добавлена ​​версия Java 7. – shmosel

+0

Спасибо за решение для Java 7, вы не можете дать какое-то объяснение? Я скоро проведу это решение. Большое спасибо. – user1841495

 Смежные вопросы

  • Нет связанных вопросов^_^