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地址和数字相互转换代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出!
热门推荐
10 财运虎年祝福语简短语
11 单亲爸爸春节祝福语简短
12 狗狗上厕所训练
13 植物种植祝福语简短
14 翻译考试祝福语朋友简短
15 个人周年庆简短祝福语
16 狗狗怎么训练
17 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短