package huawei;
import java.util.Scanner;
/**
* ip地址的转换:
* >>:有符号位右移,若是正数,高位补0,若是负数,高位补1
* >>>:无符号位右移,高位补0
* @author USER
*
*/
public class TestIP {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String string = in.nextLine();
long a = in.nextLong();
ipToLong(string);
longToIp(a);
}
private static void longToIp(long a) {
// TODO Auto-generated method stub
StringBuffer sb = new StringBuffer();
sb.append(String.valueOf(a >>> 24));//注意移位后a的值是不变的
sb.append(".");
sb.append(String.valueOf((a & 0x00FFFFFF) >>> 16));
sb.append(".");
sb.append(String.valueOf((a & 0x0000FFFF) >>> 8));
sb.append(".");
sb.append(String.valueOf((a & 0x000000FF)));
System.out.println(sb.toString());
}
private static void ipToLong(String string) {
// TODO Auto-generated method stub
String[] str = string.split("\\.");//注意点号是特殊字符,应该转义
long[] ip = new long[4];
ip[0] = Long.parseLong(str[0]);
ip[1] = Long.parseLong(str[1]);
ip[2] = Long.parseLong(str[2]);
ip[3] = Long.parseLong(str[3]);
System.out.println((ip[0] << 24)+(ip[1] << 16)+(ip[2] << 8)+ip[3]);//注意"+"比"<<"号的优先级要高
}
}
华为机试练习---IP与整数的互换
最新推荐文章于 2021-03-18 09:22:52 发布