FrontPage

package com.ziqoo.ip;

import java.util.ArrayList; import java.util.List;

public class IpAddrUtil {

	public static List<String> getAddressList(String addrStr) {
		List<String> list = new ArrayList<String>();
		String[] array = addrStr.split("/");
		if (array.length != 2) {
			list.add(addrStr);
			return list;
		}
		int bitNum = Integer.parseInt(array[1]);
		int mask = getMask(bitNum);
		long ipAddr = toLong(array[0]);
		long netAddr = ipAddr & mask;
		long maxAddr = ~mask;
		for (long l = 0; l <= maxAddr; l++) {
			list.add(toStringAddr(netAddr + l));
		}
		return list;
	}
	private static String toStringAddr(long netAddr) {
		String[] array = new String[4];
		for ( int i = 0; i < 4; i++) {
			array[i] = String.valueOf(netAddr & 0xff);
			netAddr >>= 8;
		}
		StringBuilder sb = new StringBuilder(array[3]).append(".").append(array[2]).append(".").append(array[1]).append(".").append(array[0]);
		return sb.toString();
	}
	public static long toLong(String ipAddrStr) {
		String[] array = ipAddrStr.split("\\.");
		long ipaddr = 0;
		for (int i = 0; i < 4; i++) {
			ipaddr <<= 8;
			ipaddr |= Long.parseLong(array[i]);
		}
		return ipaddr;
	}
	public static int getMask(int bitNum) {
		int mask = 0xffffffff;
		mask <<= bitNum;
		mask = ~mask;
		mask <<= 32 - bitNum;
		return mask;
	}

}


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-04-09 (水) 01:34:45 (1650d)