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はバイナリに変換されてもよい.  1selectconcat(bin(127),lpad(bin(0),8,0),lpad(bin(0),8,0),lpad(bin(1),8,0));    それぞれの前の方を0を補ってからつなぎ合わせて、このような結果が得られます. 1111111000000 0000 000001 
    システムのINETATON()関数もこのように計算します.信じないなら比較してみてもいいです.1selectbin(inet_aton('127.0.0.1'));    得られた結果もそうです.  1111111000000 0000 000001 
    結論を出す: INETATON()とは、IPの各セグメントをバイナリにしてつなぎ合わせ、32ビットのバイナリ数字を10進数に変換することです.
例:1selectINET_ATON('127.0.0.1');  -- 2selectINET_NTOA(2130706433); -- IP    なぜこのように保存しますか? 
    省スペースという人もいますが、卵が痛いです.今のハードディスクは安いので、このスペースを気にしていますか? 
    もっと合理的な説明は、検索しやすいです.例えば、あるネットのすべてのIPを調べたらいいです.1select* from table where ip between inet_aton('192.168.0.1') and inet_aton('192.168.0.255');