華爲機試練習---IP與整數的互換

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]);//注意"+"比"<<"號的優先級要高
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章