码迷,mamicode.com
首页 > 其他好文 > 详细

0727-每日一练-IP字符串转Long

时间:2017-07-26 02:03:26      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:答案   进制   network   detail   类型   package   tail   设置   ipad   

 

IP地址转换成Long型数字的算法

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

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

  1. Long ipLong = 256 * 256 * 256 * m + 
  2.               256 * 256 * n + 
  3.               256 * x + 
  4.               y 
package com.mxf.date0725;

public class IpTransform {

	public static void main(String[] args) {
		String ipAddress = "183.62.169.146";
		long ip = ipToNumber(ipAddress);
		System.out.println("ip = " + ip);
	}

	// <summary>
	/// 将127.0.0.1形式的IP地址转换成十进制整数
	/// </summary>
	/// <param name="strIp"></param>
	/// <returns></returns>
	private static Long ipToNumber(String ip) {
		Long ips = 0L;
		String[] numbers = ip.split("\\.");
		// 等价上面
		for (int i = 0; i < 4; ++i) {
			ips = ips << 8 | Integer.parseInt(numbers[i]);
		}
		return ips;
	}

}

  

 

0727-每日一练-IP字符串转Long

标签:答案   进制   network   detail   类型   package   tail   设置   ipad   

原文地址:http://www.cnblogs.com/snowwhite/p/7237258.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!