Фон
Вдохновлен этим вопросом Unix.SE (и, конечно, моим собственным ответом ).
Когда для интерфейса указывается IP-адрес, он часто задается в этой десятичной форме:
a.b.c.d e.f.g.h
где a.b.c.d
фактический адрес и e.f.g.h
маска сети.
Маска сети, представленная в двоичном виде, представляет собой набор 1
битов, за которыми следует набор 0
битов. Когда сетевая маска побитово И сравнивается с данным IP-адресом, результатом будет сетевая часть адреса или просто сетевой адрес . Это будет запрограммировано в таблице маршрутизации хоста, чтобы хост знал, отправлять что-либо, предназначенное для этой сети, через этот интерфейс.
Широковещательный адрес для сети получается путем взятия сетевого адреса (сверху) и установки всех битов хоста в 1. Широковещательный адрес используется для отправки на все адреса в данной сети.
Вызов
Если задан десятичный пунктирный IP-адрес и действительная маска сети в качестве входных данных, укажите сетевой адрес и широковещательный адрес в качестве выходных данных, также в десятичном формате с точками.
- Входные данные должны быть адресом и маской в виде двух строк в точечно-десятичном формате. Вы можете передать это как 2 отдельные строки, как список или массив из 2 строковых элементов или одну строку с адресом и маской, разделенными некоторым разумным разделителем.
- Формат вывода подчиняется тем же ограничениям, что и формат ввода.
Примеры
Input Output
192.168.0.1 255.255.255.0 192.168.0.0 192.168.0.255
192.168.0.0 255.255.255.0 192.168.0.0 192.168.0.255
192.168.0.255 255.255.255.0 192.168.0.0 192.168.0.255
100.200.100.200 255.255.255.255 100.200.100.200 100.200.100.200
1.2.3.4 0.0.0.0 0.0.0.0 255.255.255.255
10.25.30.40 255.252.0.0 10.24.0.0 10.27.255.255
252
в себе.
10.24.0.0 10.27.255.255
?