IP地址转换

来源:互联网 发布:无机物热力学数据手册 编辑:程序博客网 时间:2024/06/05 12:06
经常要判断一个ip是国内的还是国外的,有了下面程序再结合数据库查询...
public 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];      }     private static String longToIP(long longIP)     //将10进制整数形式转换成127.0.0.1形式的IP地址     {          StringBuffer sb=new StringBuffer("");          sb.append(String.valueOf(longIP>>>24));//直接右移24位          sb.append(".");          //将高8位置0,然后右移16位          sb.append(String.valueOf((longIP&0x00FFFFFF)>>>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(3526601384L));          System.out.print("十进制形式:");          System.out.println(ipToLong("210.51.170.168"));          System.out.print("普通形式:");          System.out.println(longToIP(3526601384L));     }}



程序运行结果:
IP地址的各种表现形式: 
32位二进制形式:11001010011100000110000010100011 
十进制形式:3396362403 
普通形式:202.112.96.163. 
原创粉丝点击