IPアドレスがサブネットに含まれるかどうかを判定する

Ruby版

takatoh@nightschool $ ruby is_in_subnet.rb
true
false

ちょっとトリッキーなのは、ip_to_b メソッドの sprintf のところ。頭に 0 をつけて8桁にするために、2進数(の文字列)にしたものを1と0だけからなる10進数だとみなして、%08d というフォーマットに変換している。これで IPアドレスの . で区切られた4つの部分のそれぞれが8桁(言い換えると8ビット)になる。
結果は上に示したとおり。192.18.1.5 はサブネット 192.168.1.0/24 に含まれるけど、127.0.0.1 は含まれない。

Python版

やってることは Ruby 版と同じ。

当然結果も同じ。

takatoh@nightschool $ python is_in_subnet.py
True
False

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です