Фон
Вдохновлен этим вопросом 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?