最近才知道,将ip地址转换成十进制、八进制、十六进制同样可以访问网站。
IP转为数字(第二种算法。用左移、按位或实现。效率更高。):
public long ipToLong(String ipAddress) {
long result = 0;
String[] ipAddressInArray = ipAddress.split("\\.");
for (int i = 3; i >= 0; i--) {
long ip = Long.parseLong(ipAddressInArray[3 - i]);
//left shifting 24,16,8,0 and bitwise OR
//1. 192 <<24
//1. 168 <<16
//1. 1 <<8
//1. 2 <<0
result |&#61; ip <<(i * 8);
}
return result;
}
数字转为IP&#xff0c;两种算法都差不多&#xff1a;
//ip &#61; 3232235778
public String longToIp(long ip) {
StringBuilder result &#61; new StringBuilder(15);
for (int i &#61; 0; i <4; i&#43;&#43;) {
result.insert(0,Long.toString(ip & 0xff));
if (i <3) {
result.insert(0,&#39;.&#39;);
}
ip &#61; ip >> 8;
}
return result.toString();
}
//ip &#61; 3232235778
public String longToIp2(long ip) {
return ((ip >> 24) & 0xFF) &#43; "."
&#43; ((ip >> 16) & 0xFF) &#43; "."
&#43; ((ip >> 8) & 0xFF) &#43; "."
&#43; (ip & 0xFF);
}
完整代码&#xff1a;
public class JavaBitwiseExample {
public static void main(String[] args) {
JavaBitwiseExample obj &#61; new JavaBitwiseExample();
System.out.println("iptoLong : " &#43; obj.ipToLong("192.168.1.2"));
System.out.println("iptoLong2 : " &#43; obj.ipToLong2("192.168.1.2"));
System.out.println("longToIp : " &#43; obj.longToIp(3232235778L));
System.out.println("longToIp2 : " &#43; obj.longToIp2(3232235778L));
}
// example : 192.168.1.2
public long ipToLong(String ipAddress) {
// ipAddressInArray[0] &#61; 192
String[] ipAddressInArray &#61; ipAddress.split("\\.");
long result &#61; 0;
for (int i &#61; 0; i int power &#61; 3 - i;
int ip &#61; Integer.parseInt(ipAddressInArray[i]);
// 1. 192 * 256^3
// 2. 168 * 256^2
// 3. 1 * 256^1
// 4. 2 * 256^0
result &#43;&#61; ip * Math.pow(256,power);
}
return result;
}
public long ipToLong2(String ipAddress) {
long result &#61; 0;
String[] ipAddressInArray &#61; ipAddress.split("\\.");
for (int i &#61; 3; i >&#61; 0; i--) {
long ip &#61; Long.parseLong(ipAddressInArray[3 - i]);
// left shifting 24,0 and bitwise OR
// 1. 192 <<24
// 1. 168 <<16
// 1. 1 <<8
// 1. 2 <<0
result |&#61; ip <<(i * 8);
}
return result;
}
public String longToIp(long i) {
return ((i >> 24) & 0xFF) &#43;
"." &#43; ((i >> 16) & 0xFF) &#43;
"." &#43; ((i >> 8) & 0xFF) &#43;
"." &#43; (i & 0xFF);
}
public String longToIp2(long ip) {
StringBuilder sb &#61; new StringBuilder(15);
for (int i &#61; 0; i <4; i&#43;&#43;) {
// 1. 2
// 2. 1
// 3. 168
// 4. 192
sb.insert(0,Long.toString(ip & 0xff));
if (i <3) {
sb.insert(0,&#39;.&#39;);
}
// 1. 192.168.1.2
// 2. 192.168.1
// 3. 192.168
// 4. 192
ip &#61; ip >> 8;
}
return sb.toString();
}
}
总结
以上就是本文关于Java编程IP地址和数字相互转换代码示例的全部内容&#xff0c;希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题&#xff0c;如有不足之处&#xff0c;欢迎留言指出&#xff01;
相关文章
总结
如果觉得编程之家网站内容还不错&#xff0c;欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供&#xff0c;作为学习参考使用&#xff0c;版权属于原作者。
如您喜欢交流学习经验&#xff0c;点击链接加入交流1群&#xff1a;1065694478(已满)交流2群&#xff1a;163560250