package com.bobo.algorithm;
/**
* 考察位运算符 | *
* 0xff 表示16进制的255
* .需要转义
* 基础运算的执行顺序
*/
public class HandlerIpV4 {
public static void main(String[] args) {
System.out.println("HandlerIpV4.main");
String ip = "198.136.45.168";
String newIp = "255.255.255.255";
int ip2Int = ip2Int(newIp);
System.out.println("ip2Int = " + ip2Int);
System.out.println("int2Ip(ip2Int) = " + int2Ip(ip2Int));
}
/**
* ip转int
*
* @param ip
* @return
*/
public static int ip2Int(String ip) {
int intIp = 0;
if (ip == null || ip.trim().length() == 0) {
return intIp;
}
String[] split = ip.trim().split("\\.");
for (int i = 0; i < split.length; i++) {
int i1 = Integer.parseInt(split[i]);
intIp = intIp | (i1 << (i * 8));
}
return intIp;
}
/**
* int转ip
* @param ip
* @return
*/
public static String int2Ip(int ip) {
StringBuilder sb = new StringBuilder();
//boolean cat = false;
for (int i = 0; i <4 ; i++) {
// if(cat){
// sb.append(".");
// }
sb.append(".");
// cat = true;
//0xff是255,二进制就是11111111
int temp = (ip>> (8*i)) & 0xff;
sb.append(temp);
}
return sb.substring(1).toString();
}
}