Java编程IP地址和数字相互转换代码示例
最近才知道,将ip地址转换成十进制、八进制、十六进制同样可以访问网站。
IP转为数字(第二种算法。用左移、按位或实现。效率更高。):
publiclongipToLong(StringipAddress){ longresult=0; String[]ipAddressInArray=ipAddress.split("\\."); for(inti=3;i>=0;i--){ longip=Long.parseLong(ipAddressInArray[3-i]); //leftshifting24,16,8,0andbitwiseOR //1.192<<24 //1.168<<16 //1.1<<8 //1.2<<0 result|=ip<<(i*8); } returnresult; }
数字转为IP,两种算法都差不多:
//ip=3232235778 publicStringlongToIp(longip){ StringBuilderresult=newStringBuilder(15); for(inti=0;i<4;i++){ result.insert(0,Long.toString(ip&0xff)); if(i<3){ result.insert(0,'.'); } ip=ip>>8; } returnresult.toString(); } //ip=3232235778 publicStringlongToIp2(longip){ return((ip>>24)&0xFF)+"." +((ip>>16)&0xFF)+"." +((ip>>8)&0xFF)+"." +(ip&0xFF); }
完整代码:
publicclassJavaBitwiseExample{ publicstaticvoidmain(String[]args){ JavaBitwiseExampleobj=newJavaBitwiseExample(); System.out.println("iptoLong:"+obj.ipToLong("192.168.1.2")); System.out.println("iptoLong2:"+obj.ipToLong2("192.168.1.2")); System.out.println("longToIp:"+obj.longToIp(3232235778L)); System.out.println("longToIp2:"+obj.longToIp2(3232235778L)); } //example:192.168.1.2 publiclongipToLong(StringipAddress){ //ipAddressInArray[0]=192 String[]ipAddressInArray=ipAddress.split("\\."); longresult=0; for(inti=0;i=0;i--){ longip=Long.parseLong(ipAddressInArray[3-i]); //leftshifting24,16,8,0andbitwiseOR //1.192<<24 //1.168<<16 //1.1<<8 //1.2<<0 result|=ip<<(i*8); } returnresult; } publicStringlongToIp(longi){ return((i>>24)&0xFF)+ "."+((i>>16)&0xFF)+ "."+((i>>8)&0xFF)+ "."+(i&0xFF); } publicStringlongToIp2(longip){ StringBuildersb=newStringBuilder(15); for(inti=0;i<4;i++){ //1.2 //2.1 //3.168 //4.192 sb.insert(0,Long.toString(ip&0xff)); if(i<3){ sb.insert(0,'.'); } //1.192.168.1.2 //2.192.168.1 //3.192.168 //4.192 ip=ip>>8; } returnsb.toString(); } }
总结
以上就是本文关于Java编程IP地址和数字相互转换代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出!