- 浏览: 12093 次
最新评论
一、应用范围
一般用在登录限制、查找IP所在城市等需求中,windows的ping命令也支持整数形式的IP。
二、关键技术点
将IP地址转化成整数的方法如下:
1、通过String的indexOf方法找出IP字符串中的点"."的位置。
2、根据点的位置,使用String的substring方法把IP字符串分成4段。
3、使用Long的parseLong方法把子段转化成一个3位整数。
4、通过左移位操作(字符串的方法如下:
1、将整数值进行右移位操作(>>>),右移24位,右移时高位补0,得到的数字即为第一段IP。
2、通过与操作符(&)将整数值的高8位设为0,再右移16位,得到的数字即为第二段IP。
3、通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。
4、通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。
三、实例演示
/** *//**
* 文件名:IP2Long.java */
package book.oo.String;
/** *//**
* @author joe * */
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)));
sb.append(".");
//将高8位置0,然后右移16位
sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16));
sb.append(".");
//将高16位置0,然后右移8位
sb.append(String.valueOf((longIp & 0x0000FFFF) >>>);
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.0.1";
long longIp = IP2Long.ipToLong(ipStr);
System.out.println("192.168.0.1 的整数形式为:" + longIp);
System.out.println("整数" + longIp + "转化成字符串IP地址:"
+ IP2Long.longToIP(longIp));
//ip地址转化成二进制形式输出
System.out.println("192.168.0.1 的二进制形式为:" + Long.toBinaryString(longIp));
} }
/** *//** * 文件名:IP2Long.java */ package book.oo.String; /** *//** * @author joe * */ 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))); sb.append("."); //将高8位置0,然后右移16位 sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16)); sb.append("."); //将高16位置0,然后右移8位 sb.append(String.valueOf((longIp & 0x0000FFFF) >>>); 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.0.1"; long longIp = IP2Long.ipToLong(ipStr); System.out.println("192.168.0.1 的整数形式为:" + longIp); System.out.println("整数" + longIp + "转化成字符串IP地址:" + IP2Long.longToIP(longIp)); //ip地址转化成二进制形式输出 System.out.println("192.168.0.1 的二进制形式为:" + Long.toBinaryString(longIp)); } }
输出结果:
发表评论
-
sed
2012-07-06 09:46 863sed选项包含 e, f, n. -e 指定为多项编 ... -
ORM组件XCode(十八般武艺)
2012-07-03 13:44 663之前,XCode总是若 ... -
纪念Rokon停止更新――从零开始用Rokon开发一个小游戏
2012-07-02 13:01 581懒骨头你给我听着:你有健康的家人~满意的工作~未知的女友~ ... -
adobe Air 小玩意程序:加载百度随便听听
2012-07-02 13:01 531今天,我承认会有一点偷懒,在写微博的程序的时候,忽然 ... -
flash player的重绘渲染机制
2012-07-02 13:01 612先简洁说下前人的研究成果。 一个是Tencent的Y ... -
Hello Android
2012-07-02 13:01 484虚心是知识的向导,恒心是知识的保管。 ... -
imx515 开发板Android源代码编译过程[开发日记]
2012-07-02 13:01 978Android requires the followin ... -
as连接fms
2012-07-01 10:34 544如果 ActionScript 3.0 SWF 文件需要与 ... -
WebService另一种轻量级实现―Hessian 学习笔记
2012-07-01 10:34 608最近和同事聊天,得知他们在使用一种叫做Hessian的We ... -
关于The serializable class XXX does not declare a static final serialVersionUID field of type long的警告
2012-07-01 10:34 982最近在研究Java与Flex用Json交换数据,也就是Ja ... -
Flex Socket编程
2012-07-01 10:34 535比较懒,比较少上csdn的,如果发现留言给我没有回复,望见 ... -
Flex4与java通信(二、与servlet通信)
2012-07-01 10:34 532说明:这里介绍使用URLRequest+URLLoader ... -
Flex 和 Ogre
2012-06-30 16:57 525Flex 和 Ogre 2011年04月12日 最近和赖 ... -
Flex Spring整合包
2012-06-30 16:57 540Flex Spring整合包 2010年11月10日 A ... -
flex+java整合开发
2012-06-30 16:57 702flex+java整合开发 2010年08月16日 用F ... -
最全的FLEX网站收集分享
2012-06-30 16:57 489最全的FLEX网站收集分享 2010年06月24日 一、 ... -
如何进行Flex Spring整合
2012-06-30 16:57 474如何进行Flex Spring整合 2010年09月20日 ...
相关推荐
ipv4或ipv6字符串形式的地址转换为BigInteger数字。
示例描述:本章学习数组与字符串。 ArrayString.java 字符串数组 assignTwoDime.java 为二维数组赋值 getMaxElem.java 获取数组中的最大元素 incCapicity.java 演示StingBuffer的容量增长 SortDemo.java 排序...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
IP地址转化成整数,整数转化成IP地址; 十八为身份证格式验证;表达式解析器;字符串编码的转换;字符串对齐器;密码加密和验证(MD5); 制作命令行程序;使用正则表达式操作字符串;使用正则表达式验证电话号码的...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
实例093 将字符串转换成整数 114 实例094 整数进制转换器 115 实例095 查看数字的取值范围 116 实例096 ASCII编码查看器 117 实例097 Double类型的比较 118 5.4 面向对象的特征 119 实例098 经理与员工的差异 119 ...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...
下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序: function IP2V(ip){re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式if(re.test(ip)){return RegExp.$1*Math.pow(255,3))+...
5 IP地址转化成整数 5. 6 18位身份证格式验证 5. 7 表达式解析器 5. 8 字符串编码的转换 5. 9 字符串对齐器 5. 10 密码加密与验证 5. 11 制作命令行程序 5. 12 使用StringTokenizer ...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...
24.如何实现字符串和数组的转换 25.如何实现字符大小写的转换 26.如何将每个单词的首个字母改成大写 27.如何将汉字转换为拼音 28.如何分位显示位数较长的数字 29.如何将数字转换为大写的中文字符 30.如何判断奇数和...
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...