mysqlにはintタイプでIPを格納します.
1278 ワード
オリジナルアドレス:http://www.phpv5.com/blog/archives/313
この文章は技術的な内容があまりないです.主に二つのmysql関数を紹介します. INETATON()IPを十進数に変換し、INET_NTOA()はデジタルをIPに変換する.
先にIPの構造を見にきて、127.1.0.1 ,コンピュータを学ぶのは2のN乗に対して比較的に敏感で、見たところ4つの8桁のバイナリ数字から構成するのだと推測して、はい、このようにします.つまり、IPはバイナリに変換されてもよい.
システムのINETATON()関数もこのように計算します.信じないなら比較してみてもいいです.
結論を出す: INETATON()とは、IPの各セグメントをバイナリにしてつなぎ合わせ、32ビットのバイナリ数字を10進数に変換することです.
例:
省スペースという人もいますが、卵が痛いです.今のハードディスクは安いので、このスペースを気にしていますか?
もっと合理的な説明は、検索しやすいです.例えば、あるネットのすべてのIPを調べたらいいです.
この文章は技術的な内容があまりないです.主に二つのmysql関数を紹介します. INETATON()IPを十進数に変換し、INET_NTOA()はデジタルをIPに変換する.
先にIPの構造を見にきて、127.1.0.1 ,コンピュータを学ぶのは2のN乗に対して比較的に敏感で、見たところ4つの8桁のバイナリ数字から構成するのだと推測して、はい、このようにします.つまり、IPはバイナリに変換されてもよい.
1
select
concat(bin(127),lpad(bin(0),8,0),lpad(bin(0),8,0),lpad(bin(1),8,0));
それぞれの前の方を0を補ってからつなぎ合わせて、このような結果が得られます. 1111111000000 0000 000001 システムのINETATON()関数もこのように計算します.信じないなら比較してみてもいいです.
1
select
bin(inet_aton(
'127.0.0.1'
・));
得られた結果もそうです. 1111111000000 0000 000001 結論を出す: INETATON()とは、IPの各セグメントをバイナリにしてつなぎ合わせ、32ビットのバイナリ数字を10進数に変換することです.
例:
1
select
INET_ATON(
'127.0.0.1'
・); --
2
select
INET_NTOA(2130706433); -- IP
なぜこのように保存しますか? 省スペースという人もいますが、卵が痛いです.今のハードディスクは安いので、このスペースを気にしていますか?
もっと合理的な説明は、検索しやすいです.例えば、あるネットのすべてのIPを調べたらいいです.
1
select
* from table where ip between inet_aton(
'192.168.0.1'
) and inet_aton(
'192.168.0.255'
・);