- 浏览: 291313 次
- 性别:
- 来自: 江西
文章分类
最新评论
-
wzxxzw519:
多谢哈哈哈哈哈
eclipse左边导航package explorer自动定位 -
jmq2007:
感谢!
eclipse安装maven插件,处理无Maven Pom editor打开方式问题 -
sswh:
非常感谢!不过一个maven插件的安装就弄得这样麻烦(Ecli ...
eclipse安装maven插件,处理无Maven Pom editor打开方式问题 -
摇曳的风:
谢谢,刚知道。
eclipse左边导航package explorer自动定位 -
张阿三:
不错!
将win7电脑变身WiFi热点,让手机、笔记本共享上网
将一个Ip地址转换成整形
//接受一个String类型的一个参数,将其转化成一个long类型的
//暂时转化String类型的IP地址
当发生 192.168.12.1和192.168.1.21的时候用上面的那种转换的话,结果是相同的:192168121
所以有下面两种方式:
第一种:
id分为四段,每段不够3位的话,加零如:192.168.12.1和192.168.1.21,结果是:192168012001和192168001021
code:
第二种:
一、应用范围
一般用在登录限制、查找IP所在城市等需求中,windows的ping命令也支持整数形式的IP。
二、关键技术点
将IP地址转化成整数的方法如下:
1、通过String的indexOf方法找出IP字符串中的点"."的位置。
2、根据点的位置,使用String的substring方法把IP字符串分成4段。
3、使用Long的parseLong方法把子段转化成一个3位整数。
4、通过左移位操作(<<)给每一段的数字加权,第一段的权为2的24次方,第二段的权为2的16次方,第三段的权为2的8次方,最后一段的权为1
将整数形式的IP地址转化成字符串的方法如下:
1、将整数值进行右移位操作(>>>),右移24位,右移时高位补0,得到的数字即为第一段IP。
2、通过与操作符(&)将整数值的高8位设为0,再右移16位,得到的数字即为第二段IP。
3、通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。
4、通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。
三、实例演示
//接受一个String类型的一个参数,将其转化成一个long类型的
//暂时转化String类型的IP地址
public long ipToLong(String ip){ String[] ips = ip.split("//."); StringBuffer strip = new StringBuffer(); for(int i=0;i<ips.length;i++){ strip.append(ips[i]); } return Long.parseLong(strip.toString()); }
当发生 192.168.12.1和192.168.1.21的时候用上面的那种转换的话,结果是相同的:192168121
所以有下面两种方式:
第一种:
id分为四段,每段不够3位的话,加零如:192.168.12.1和192.168.1.21,结果是:192168012001和192168001021
code:
package com.text.dos; import org.omg.PortableInterceptor.DISCARDING; public class Test { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 String s = "192.168.1.12"; long j = doString(s); System.out.println(j); } private static long doString(String idString) { long i = 0; int a1 = idString.indexOf("."); int a2 = idString.indexOf(".",a1+1); int a3 = idString.indexOf(".",a2+1); String s1 = idString.substring(0,a1); String s2 = idString.substring(a1+1,a2); String s3 = idString.substring(a2+1, a3); String s4 = idString.substring(a3+1,idString.length()); //System.out.println(s4); if(s1.length()==1) s1 = "00"+s1; else if (s1.length()==2) { s1 = "0"+s1; } System.out.println(s1); if(s2.length()==1) s2 = "00"+s2; else if (s2.length()==2) { s2 = "0"+s2; } System.out.println(s2); if(s3.length()==1) s3 = "00"+s3; else if (s3.length()==2) { s3 = "0"+s3; } if(s4.length()==1) s4 = "00"+s4; else if (s4.length()==2) { s4 = "0"+s4; } System.out.println(s3); String s = s1+s2+s3+s4; i = Long.parseLong(s); return i; } }
第二种:
一、应用范围
一般用在登录限制、查找IP所在城市等需求中,windows的ping命令也支持整数形式的IP。
二、关键技术点
将IP地址转化成整数的方法如下:
1、通过String的indexOf方法找出IP字符串中的点"."的位置。
2、根据点的位置,使用String的substring方法把IP字符串分成4段。
3、使用Long的parseLong方法把子段转化成一个3位整数。
4、通过左移位操作(<<)给每一段的数字加权,第一段的权为2的24次方,第二段的权为2的16次方,第三段的权为2的8次方,最后一段的权为1
将整数形式的IP地址转化成字符串的方法如下:
1、将整数值进行右移位操作(>>>),右移24位,右移时高位补0,得到的数字即为第一段IP。
2、通过与操作符(&)将整数值的高8位设为0,再右移16位,得到的数字即为第二段IP。
3、通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。
4、通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。
三、实例演示
public class Ip2Long { // 将127.0.0.1形式的IP地址转换成十进制整数,这里没有进行任何错误处理 public static long ipToLong(String strIp) { long[] ip = new long[4]; // 先找到IP地址字符串中.的位置 int position1 = strIp.indexOf("."); int position2 = strIp.indexOf(".", position1 + 1); int position3 = strIp.indexOf(".", position2 + 1); // 将每个.之间的字符串转换成整型 ip[0] = Long.parseLong(strIp.substring(0, position1)); ip[1] = Long.parseLong(strIp.substring(position1 + 1, position2)); ip[2] = Long.parseLong(strIp.substring(position2 + 1, position3)); ip[3] = Long.parseLong(strIp.substring(position3 + 1)); return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3]; } // 将十进制整数形式转换成127.0.0.1形式的ip地址 public static String longToIP(long longIp) { StringBuffer sb = new StringBuffer(""); // 直接右移24位 sb.append(String.valueOf((longIp >>> 24))); sb.append("."); // 将高8位置0,然后右移16位 sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16)); sb.append("."); // 将高16位置0,然后右移8位 sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8)); sb.append("."); // 将高24位置0 sb.append(String.valueOf((longIp & 0x000000FF))); return sb.toString(); } /** */ /** * @param args */ public static void main(String[] args) { String ipStr = "192.168.2.99"; long longIp = Ip2Long.ipToLong(ipStr); System.out.println("192.168.2.99 的整数形式为:" + longIp); System.out.println("整数" + longIp + "转化成字符串IP地址:" + Ip2Long.longToIP(longIp)); // ip地址转化成二进制形式输出 System.out.println("192.168.2.99 的二进制形式为:" + Long.toBinaryString(longIp)); } }
发表评论
-
synchronized修饰静态方法和非静态方法的区别
2017-04-16 16:27 975区别: 非静态方法是获取对象锁(如this ... -
公钥,私钥和数字签名的理解
2016-08-04 17:56 548一、公钥加密 假设一 ... -
JAVA自定义注解2
2016-08-01 16:51 552如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有 ... -
JAVA自定义注解1
2016-08-01 16:51 558要深入学习注解,我们就必须能定义自己的注解,并使用注解,在 ... -
git同时配置gitlab和github
2016-06-16 16:27 1224本人一字一句写的,转载备注来源,谢谢 一、设置gi ... -
tomcat结合nginx使用小结
2016-06-06 10:45 546相信很多人都听过nginx ... -
Java异常:选择Checked Exception还是Unchecked Exception?
2016-04-01 17:18 856Java包含两种异常:checked异常和unchecke ... -
spring@Transactional注解解决事务处理问题
2016-04-01 16:57 981自己开始使用注解的时候,不知道为什么总是有错误,好像参考了 ... -
UML类图几种关系的总结
2016-03-29 19:44 556在UML类图中,常见的有以下几种关系:泛化(Genera ... -
cygwin安装redis
2016-01-14 22:18 595http://my.oschina.net/maxid ... -
Java NIO 系列教程
2015-12-08 23:18 641Java NIO(New IO)是从Java 1.4版本开 ... -
HTTP协议详解
2015-12-08 23:03 471引言 ... -
【Java线程】锁机制:synchronized、Lock、Condition
2015-12-07 23:59 477http://www.infoq.c ... -
java自带线程池和队列详细讲解
2015-12-07 23:31 334Java线程池使用说明 一简介 线程的使用在java ... -
Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
2015-12-07 00:04 374一、问题: 数据库表数据量极大 ... -
request.getRequestURI()、getRequestURL()、getContextPath()、getServletPath()区别
2015-11-25 14:26 562假定你的web application ... -
Java Volatile/transient关键字
2015-11-13 14:45 508Volatile修饰的成员变量在每次被线程访问时,都强迫从 ... -
mysql集群master和salve配置mysql的master和salve详解事件
2015-10-21 21:58 620mysql 集群 master和salve 配 ... -
剖析淘宝TDDL(TAOBAO DISTRIBUTE DATA LAYER)
2015-10-21 21:32 546剖析淘宝 TDDL ( TAOBA ... -
分布式集群系统下的高可用session解决方案
2015-10-20 23:04 655目前,为了使web能适应大规模的访问,需要实现应用的集群部署 ...
相关推荐
本文将详细解析"IP地址转换整形工具"及其相关知识点,旨在帮助用户理解和掌握IP地址与整数之间的转换技巧。 首先,我们要明白IP地址(Internet Protocol Address)是由32位二进制组成的,通常以点分十进制的形式...
将IP地址转换为整型的过程称为IPv4到整型的转换。这通常通过以下步骤完成: 1. 将每段十进制数转换为二进制。 2. 把四段二进制数拼接在一起,形成一个32位的二进制数。 3. 将这个32位二进制数转换为十进制整数。...
IP地址转换成整数,整数转换成IP地址,16进制转换成IP地址,IP地址转换成16进制
要将这样的IP地址转换为长整型,我们需将这四个八位段分别转换为十进制数,然后将它们连接起来形成一个32位的整数。 下面是一个简单的Python代码示例,展示了如何实现这个转换: ```python def ip_to_long(ip_str)...
时间互转整型、IP地址互转整型、的工具,方便程序开发,数据查询。
本压缩包“易语言源码易语言IP地址转换源码.rar”包含了用易语言编写的IP地址转换的源代码,这对于学习易语言和网络编程的初学者来说是一份非常宝贵的资料。 IP地址是互联网上设备的唯一标识,通常以点分十进制的...
在某些情况下,我们需要将IP地址转换为Int64格式,这主要出于计算或存储效率的考虑。这种转换在处理大量IP数据时特别有用,例如在网络监控、数据分析或路由表中。 IP地址转换为Int64的过程可以分为以下几个步骤: ...
点分十进制IP和长整型转换,直接把IP地址转换为整型,存数据库增加效率。
IP地址转换主要包括以下几种形式: 1. 十进制和二进制:将十进制IP转换为二进制形式,有助于理解网络掩码和子网划分。 2. 十进制和十六进制:在某些网络计算中,十六进制表示更方便,如IPv6。 3. IP和字符串:有时...
首先我们要先了解一下IP地址转换为整型(严格来说应该说是长整型)的原理~ 【转换原理】:假设IP为:w.x.y.z,则IP地址转为整型数字的计算公式为:intIP = 256*256*256*w + 256*256*x + 256*y + z 【PHP的互转】:PHP...
但在某些场景下,如数据库存储或算法处理时,将IP地址转换为整型数更为高效。本篇将详细介绍如何使用Delphi实现IP地址与整型之间的相互转换。 #### 二、基础知识回顾 ##### 1. IP地址结构 IPv4地址由32位二进制...
IP地址通常表示为四段式的点分十进制形式,例如 "192.168.1.1",而整形数值则是将IP地址转换成一个32位无符号整数,便于计算和存储。在C#中,我们可以使用内置的方法或自定义函数来实现这两种形式的互转。 1. **IP...
在IT领域,IP数据库通常用于将IP地址转换为地理位置信息,反之亦然。"ip数据库(长整型)最新转换"这个标题暗示我们有一个数据库,其中的IP地址已经被转换为长整型数值。这种转换是常见的做法,因为长整型表示IP地址...
本文将深入探讨如何将点分十进制表示的IP地址转换为整型和十六进制字符串,以及如何进行反向转换。 首先,让我们了解IP地址的基本概念。IP地址是由32位二进制数组成的,通常被分为四组,每组8位,用点号(.)隔开,...
要将IP地址转换为32位整型数字,可以将IP地址的每个八位段转换为整数,然后将它们组合在一起。以下是一个简单的Delphi函数实现: ```delphi function IPToLong(const IPAddress: string): Cardinal; var Octets: ...
Console.WriteLine("并输出IP地址的二进制表示形式,判断IP地址的类别,"); Console.WriteLine("输出IP地址所在的网络号、主机号以及广播地址。\n\n"); Console.WriteLine("*************************************...
本文将深入探讨IP地址段分类、IP转换整形、IP对应的地区以及IP分类的相关知识点。 首先,让我们了解IP地址的基本概念。IP(Internet Protocol)地址是一个32位二进制数,通常被分为四个八位段,每个段用十进制表示...
`inToIptools.exe`很可能是一个实际的执行程序,这个小工具实现了将unsigned long格式的IP地址转换为可读的字符串形式。 在实际开发中,开发者可能会编写这样的工具来辅助调试或数据分析,尤其是在处理大量IP数据时...
提供把ip地址转换为长整型,把长整型转换为ip地址 。提供一个一般的地址(如192.168.1.250),以及掩码的长度(如24),得到网络地址(如192.168.1.0)。获取掩码位数。根据起始地址,终止地址,掩码长度,获取可使用的...