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與整數的互換
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.