java中实现IP地址的各种表现形式之间的转换

类别:Java 点击:0 评论:0 推荐:




/**
@描述:java中实现IP地址的各种表现形式之间的转换
@作者:慈勤强
@Email : [email protected] http://blog.csdn.net/cqq
*/

class IP
{
     private static long ipToLong(String strIP)
     //将127.0.0.1 形式的IP地址转换成10进制整数,这里没有进行任何错误处理
     {
          int j=0;
          int i=0;
          long [] ip=new long[4];
          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]; //ip1*256*256*256+ip2*256*256+ip3*256+ip4
     }
     private static String longToIP(long longIP)
     //将10进制整数形式转换成127.0.0.1形式的IP地址,在命令提示符下输入ping 3396362403L
     {
          StringBuffer sb=new StringBuffer("");
          sb.append(String.valueOf(longIP>>>24));//直接右移24位
          sb.append(".");
          sb.append(String.valueOf((longIP&0x00FFFFFF)>>>16)); //将高8位置0,然后右移16位
          sb.append(".");
          sb.append(String.valueOf((longIP&0x0000FFFF)>>>8));
          sb.append(".");
          sb.append(String.valueOf(longIP&0x000000FF));
          sb.append(".");
          return sb.toString(); 
     } 
     public static void main(String[] args)
     {
          System.out.println("IP地址的各种表现形式:\r\n");
          System.out.print("32位二进制形式:");
          System.out.println(Long.toBinaryString(3396362403L));
          System.out.print("十进制形式:");
          System.out.println(ipToLong("202.112.96.163"));
          System.out.print("普通形式:");
          System.out.println(longToIP(3396362403L));
     }
}

运行结果:


 ----------java ----------
IP地址的各种表现形式:

32位二进制形式:11001010011100000110000010100011
十进制形式:3396362403
普通形式:202.112.96.163.

输出完成 (耗时 1 秒) - 正常终止

本文地址:http://com.8s8s.com/it/it13308.htm