IP地址转换成Long型数字的算法
来源:互联网 发布:snmp java 编辑:程序博客网 时间:2024/05/23 11:25
在应用程序开发中,涉及到IP地址的存储,大部分开发人员都将其存为String(或文本类型)。能否将固定格式为m.n.x.y的IP地址转换成Long型的数字呢?答案是肯定的。在数据库层面,可以直接将结果设置成表的主键,避免IP地址的重复,因为是主键,也就是表的索引了,数据库查找时会更快。
对于格式为m.n.x.y的IP地址,转换成Long型数字的算法如下:
view plain copy
- Long ipLong = 256 * 256 * 256 * m +
- 256 * 256 * n +
- 256 * x +
- y
使用Java语言,则这样实现:
view plain copy
- private static Long setIP(String ipaddr) {
- String ip[] = ipaddr.split("\\.");
- Long ipLong = 256 * 256 * 256 * Long.parseLong(ip[0]) +
- 256 * 256 * Long.parseLong(ip[1]) +
- 256 * Long.parseLong(ip[2]) +
- Long.parseLong(ip[3]);
- return ipLong;
- }
那么,对于已知的一个表示IP地址的Long型数字,又该如何将其还原成String(字符型)的IP地址呢?算法也很简单,整除和取余。使用Java语言,则这样实现:
view plain copy
- private static String getIP(Long ipaddr) {
- long y = ipaddr % 256;
- long m = (ipaddr - y) / (256 * 256 * 256);
- long n = (ipaddr - 256 * 256 *256 * m - y) / (256 * 256);
- long x = (ipaddr - 256 * 256 *256 * m - 256 * 256 *n - y) / 256;
- return m + "." + n + "." + x + "." + y;
- }
算法测试:
view plain copy
- public static void main(String[] args) {
- Long ipLong = setIP("183.62.169.146");
- System.out.println(ipLong);
- System.out.println(getIP(ipLong));
- }
结果:
3074337170
183.62.169.146
- IP地址转换成Long型数字的算法
- unsigned long整型数字转化成IP地址的实现
- IP地址与Long型整数的相互转换
- ip地址转换成16进制long
- JAVA IP地址相关:用Java来获取访问者真实的IP地址,IP地址转化成long型数的算法
- JAVA IP地址相关:用Java来获取访问者真实的IP地址,IP地址转化成long型数的算法 .
- 将IP地址转换成等效的数字
- ip地址 转换为数字的公式
- IP地址和数字的转换
- ip地址与Long数值的相互转换
- C# IP地址和整数之间的转换,IP地址和数字ip地址的转换
- mysql ip 转换成long 类型数字方法
- 字符串转换为long型的数字
- IP地址转换算法
- IP地址数字相互转换
- IP地址转换:数字与字符串之间的转换
- ip和long的转换
- IP地址与数字地址相互转换
- SVN使用小结
- iPhone消息推送机制实现与探讨
- 安装编译好的内核
- android UI相关类
- action 与 jsp 传值 ,session ,request
- IP地址转换成Long型数字的算法
- activiti学习资料(流程任务高亮显示)
- fatal error C1070: mismatched wabtags.h
- mysql优化实践总结
- NAT 类型及检测方法
- 如何让IOS应用从容地崩溃
- PHP学习网站
- 求中位数的O(n)算法
- CentOS下go 语言开发环境源码安装