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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0727-每日一练-IP字符串转Long相关的知识,希望对你有一定的参考价值。

 

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的主要内容,如果未能解决你的问题,请参考以下文章

每日一练5

蓝桥杯C/C++每日一练之十六进制转十进制

4.3 每日一练

CSDN|每日一练影分身

CSDN|每日一练影分身

每日一练