IP地址转换成Long型数字的算法
在应用程序开发中,涉及到IP地址的存储,大部分开发人员都将其存为String(或文本类型)。能否将固定格式为m.n.x.y的IP地址转换成Long型的数字呢?答案是肯定的。在数据库层面,可以直接将结果设置成表的主键,避免IP地址的重复,因为是主键,也就是表的索引了,数据库查找时会更快。
对于格式为m.n.x.y的IP地址,转换成Long型数字的算法如下:
- Long ipLong = 256 * 256 * 256 * m +
- 256 * 256 * n +
- 256 * x +
- 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; } }
时间: 2024-10-18 00:34:46