在应用程序开发中,涉及到IP地址的存储,大部分开发人员都将其存为String(或文本类型)。能否将固定格式为m.n.x.y的IP地址转换成 Long型的数字呢?答案是肯定的。在数据库层面,可以直接将结果设置成表的主键,避免IP地址的重复,因为是主键,也就是表的索引了,数据库查找时会更 快。

对于格式为m.n.x.y的IP地址,转换成Long型数字的算法如下:

  1. Long  =  * 256 * 256 * m + 
  2.               y 

使用Java语言,则这样实现:

  1. privatestatic);  
  2.  *  *  * Long.parseLong(ip[]) +  
  3.  *  * Long.parseLong(ip[]) +  
  4.  * Long.parseLong(ip[]) +  
  5. ]); 
  6. return}  

那么,对于已知的一个表示IP地址的Long型数字,又该如何将其还原成String(字符型)的IP地址呢?算法也很简单,整除和取余。使用Java语言,则这样实现:

  1. privatestaticlong
  2. long *  * ); 
  3. long *  * * m - y) / ( * ); 
  4. long *  * * m -  *  *n - y) / 
  5. return + n +  + x +  + y; 

算法测试:

  1. publicstaticvoid); 

结果:

3074337170

183.62.169.146