ip地址的幾種處理方式

讀入String類型的ip地址,幾種處理方式如下:


1. ip分段,不足三位處補0

String myIp = "200.22.22.228";
		//先對每段ip追加兩個0,再保留後三位,從而將ip地址轉換爲每段3位的格式
		myIp = myIp.replaceAll("(\\d{1,3})", "00$1");
		myIp = myIp.replaceAll("0*(\\d{3})", "$1");
		System.out.println(myIp);


2. 去掉前置0

public String removeZero(String ip) {
		if(ip != "") {
			String[] ss = ip.split("\\.");
			ip = "";
			for(int i = 0; i < ss.length; i++) {
				ip += ss[i].replaceAll("^[0]+", "");//或採用ip轉成int再轉回來
				if(i != ss.length - 1) {
					ip += ".";
				}
			}
		}
		return ip;
	}

3. String型ip轉換爲對應的32位long型數

	public long getLongIp(String ip) {
		long longIp = 0;
		if(ip != "") {
			String[] ss = ip.split("\\.");
			for(int i = 0; i < ss.length; i++) {
				//移位運算一定要加()!!
				longIp = (longIp<<8) + Integer.parseInt(ss[i]);
			}
		}
		return longIp;
	}
或利用scanner直接讀取long


	public long getLongIp2(String ip) {
		Scanner sc = new Scanner(ip).useDelimiter("\\.");
		return (sc.nextLong()<<24) + (sc.nextLong()<<16) + (sc.nextLong()<<8) + (sc.nextLong());
	}

4. 遍歷某個ip段內所有ip地址(重要)

將ip轉爲Int型數組,每段代表一個0-255的數,對數組進行循環進位操作

public Object[] getAllIp(String startIp, String endIp) {
	    ArrayList<String> ips = new ArrayList<String>();
	    String[] astartIp = startIp.split("\\.");
	    String[] aendIp = endIp.split("\\.");
	    int[] istartIp = new int[4];
	    int[] iendIp = new int[4];
	    for (int i = 0; i < 4; i++) {
	        istartIp[i] = Integer.parseInt(astartIp[i]);
	        iendIp[i] = Integer.parseInt(aendIp[i]);
	    }
	    for (int A = istartIp[0]; A <= iendIp[0]; A++) {
	        for (int B = (A == istartIp[0] ? istartIp[1] : 0); B <= (A == iendIp[0] ? iendIp[1]
	                : 255); B++) {
	            for (int C = (B == istartIp[1] ? istartIp[2] : 0); C <= (B == iendIp[1] ? iendIp[2]
	                    : 255); C++) {
	                for (int D = (C == istartIp[2] ? istartIp[3] : 0); D <= (C == iendIp[2] ? iendIp[3]
	                        : 255); D++) {
	                    ips.add(new String(A + "." + B + "." + C + "." + D));
	                }
	            }
	        }
	    }
	    return ips.toArray();
	}




發佈了29 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章