程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql存儲IP地址省空間的方法

mysql存儲IP地址省空間的方法

編輯:MySQL綜合教程


mysql存儲IP地址省空間的方法   作為一名開發人員,當你在使用mysql來做為你的存儲數據庫,肯定都會考慮用最合適的字段類型來創建數據庫表吧。  www.2cto.com   可是假如你其中一個語句這麼寫 ip varchar(15) not null default '' COMMENT '用戶IP地址', 你有沒考慮過,其實,有更省空間的方式來存儲用戶的IP地址。(這個雖然是變長的,但對於大部分中國IP來說,基本都在10字節以上吧)。   其實,mysql是有專門的字段和函數來存取用戶的IP地址的,那就是 int unsigned.你沒有看錯,就是無符合int型。   你可以在mysql中: SELECT INET_ATON('192.168.23.4'); 得到這個IP的值為:3232241412 你也可以在mysql中: SELECT INET_NTOA(3232241412); 得到這個值對應的IP是:192.168.23.4   因為他們都遵循一個轉換算法: A*256*256*256+B*256*256+C*256+D的算法   下面提供一個粗略的將IP地址轉換為long的JAVA方法:   public static long ipToLong(String strIp) throws Exception{         long[] ip = new long[4];         //先找到IP地址字符串中.的位置         int position1 = strIp.indexOf(".");         int position2 = strIp.indexOf(".", position1 + 1);         int position3 = strIp.indexOf(".", position2 + 1);         //將每個.之間的字符串轉換成整型         ip[0] = Long.parseLong(strIp.substring(0, position1));         ip[1] = Long.parseLong(strIp.substring(position1+1, position2));         ip[2] = Long.parseLong(strIp.substring(position2+1, position3));         ip[3] = Long.parseLong(strIp.substring(position3+1));         return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3]; }   再提供一個粗略的將long轉換為IP字符串的JAVA方法:   public static String longToIP(long longIp){         StringBuffer sb = new StringBuffer("");         //直接右移24位         sb.append(String.valueOf((longIp >>> 24)));         sb.append(".");         //將高8位置0,然後右移16位         sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16));         sb.append(".");         //將高16位置0,然後右移8位         sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8));         sb.append(".");         //將高24位置0         sb.append(String.valueOf((longIp & 0x000000FF)));         return sb.toString(); }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved