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地址和数字相互转换代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出!