IP アドレスと 10 進数の相互変換

IPv4 アドレスを 1 つの 10 進数として表したり、その逆に戻したりします。データベースにアドレスを数値で持つときや、範囲の大小を比べるときに使います。16 進数と 2 進数もあわせて出します。

IPv4 のアドレスを 1 つの 10 進数として表したり、その数からアドレスへ戻したりします。データベースにアドレスを数値で持つときや、範囲の大小を比べるときに使います。

V=16777216a+65536b+256c+dV = 16777216 a + 65536 b + 256 c + d

aa から dd は 4 つのオクテット、VV が 10 進数の値です。係数はそれぞれ 2242^{24}2162^{16}282^{8}202^{0} で、上の桁ほど重みが大きくなります。

なぜ 1 つの数にするのか

アドレスはもともと 32 bit の数で、読みやすいように 8 bit ずつ 4 つに区切って点でつないでいます。点をほどけば、ただの整数に戻ります。

整数にしてしまえば、大小の比較や範囲の判定が不等号だけで書けます。文字列のままでは、10.0.0.9 と 10.0.0.10 の大小が正しく並びません。

192.168.1.1 は 10 進数で 3232235777、16 進数で C0A80101 です。

192 × 16777216 = 3221225472、168 × 65536 = 11010048、1 × 256 = 256 で、最後の 1 を足して 3232235777 になります。16 進数では、各オクテットがちょうど 2 桁ずつに収まります。

注意点

扱えるのは IPv4 だけです。IPv6 は 128 bit あるので、この形では表せません。

10 進数から戻すときは、0 から 4294967295 の範囲で入力してください。