Lý lịch
Lấy cảm hứng từ câu hỏi Unix.SE này (và tất nhiên là câu trả lời của riêng tôi ).
Khi một địa chỉ IP được chỉ định cho một giao diện, nó thường được cung cấp ở dạng thập phân rải rác này:
a.b.c.d e.f.g.h
nơi a.b.c.d
là địa chỉ thực tế và e.f.g.h
là mặt nạ mạng.
Netmask, khi được biểu diễn dưới dạng nhị phân, về cơ bản là một bó 1
bit theo sau là một bó 0
bit. Khi netmask được bit ANDed theo địa chỉ IP đã cho, kết quả sẽ là phần mạng của địa chỉ hoặc đơn giản là địa chỉ mạng . Điều này sẽ được lập trình vào bảng lộ trình của máy chủ để chủ nhà biết gửi bất kỳ thứ gì dành cho mạng này ra ngoài giao diện này.
Địa chỉ quảng bá cho mạng được lấy bằng cách lấy địa chỉ mạng (từ phía trên) và đặt tất cả các bit máy chủ thành 1. Địa chỉ quảng bá được sử dụng để gửi đến tất cả các địa chỉ trong mạng đã cho.
Thử thách
Cho một địa chỉ IP thập phân rải rác và netmask hợp lệ làm đầu vào, cung cấp địa chỉ mạng và địa chỉ quảng bá làm đầu ra, cũng ở định dạng thập phân rải rác.
- Đầu vào phải là địa chỉ và mặt nạ dưới dạng hai chuỗi ở định dạng thập phân rải rác. Bạn có thể chuyển chuỗi này thành 2 chuỗi riêng biệt, dưới dạng danh sách hoặc mảng gồm 2 phần tử chuỗi hoặc một chuỗi có địa chỉ và mặt nạ được phân tách bằng một số dấu tách hợp lý.
- Định dạng đầu ra phải chịu các ràng buộc tương tự như định dạng đầu vào.
Ví dụ
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
trong đó.
10.24.0.0 10.27.255.255
?