Mask.rb

This content was produced by an LLM and could include errors.

このスクリプトは IPAddr#mask(i) の挙動確認です。/32 のアドレスに対しプレフィックス長 0〜32 を順に適用し、「プレフィックス長\tネットマスク」を33行タブ区切りで出力します(たとえば i=24 → 255.255.255.0)。CIDR長とマスク表記の対応が一目で分かります。

require 'ipaddr'
#=> true

ip = IPAddr.new('255.255.255.255/32')
#=> #<IPAddr: IPv4:255.255.255.255/255.255.255.255>
33.times { |i| puts "#{i}\t#{ip.mask(i)}" }
0	0.0.0.0
1	128.0.0.0
2	192.0.0.0
3	224.0.0.0
4	240.0.0.0
5	248.0.0.0
6	252.0.0.0
7	254.0.0.0
8	255.0.0.0
9	255.128.0.0
10	255.192.0.0
11	255.224.0.0
12	255.240.0.0
13	255.248.0.0
14	255.252.0.0
15	255.254.0.0
16	255.255.0.0
17	255.255.128.0
18	255.255.192.0
19	255.255.224.0
20	255.255.240.0
21	255.255.248.0
22	255.255.252.0
23	255.255.254.0
24	255.255.255.0
25	255.255.255.128
26	255.255.255.192
27	255.255.255.224
28	255.255.255.240
29	255.255.255.248
30	255.255.255.252
31	255.255.255.254
32	255.255.255.255
#=> 33

Ruby 4.0.6