IPv4アドレス

前回言っていたソースコードです。
といっても、大元のInet4Address.javaを参考にすれば簡単にできると思います。

	/** コンマ(正規表現用) */
	private static final String IPV4_REGX_COMMA = "\\.";
	/** コンマ */
	private static final String COMMA = ".";
	

        /**
	 * サブネットがない一般的なIPv4アドレスを各オクテットに分割するためのメソッド
	 * @param addr 
	 * @return オクテット文字配列
	 */
	public static String separateIpv4Basic(String addr) {
		if(addr == null) {
			return null;
		}
		String ip4oct = addr.split(IPV4_REGX_COMMA);
		if(!validateIpv4(ip4oct)) {
			return null;
		}
		return ip4oct;
	}
	
	
	/**
	 * 10進数のIPアドレス配列を引数としてIPv4アドレス文字列を作成する
	 * @param octets 10進数で表現されたIPアドレス配列
	 * @return IPv4アドレス
	 */
	public static String createIpv4StrBasic(int octets) {
		StringBuffer buf = new StringBuffer();
		boolean flag = false;
		for(int i=0;i> 8;
		if(occhk > 0 || occhk < 0 ) {
			return false;
		}
		return true;
	}
	
	
	/**
	 * サブネットマスクのIPアドレスを作成する
	 * @param num サブネットマスクの数字0-32まで
	 * @return サブネットマスクのアドレス 
	 */
	public static int getSubnetMaskIp4OfInt(int num) {
		if(num > 32 || num < 0) {
			return 0;
		}
		int subaddr=0;
		subaddr|=(((byte)255 << 0) & 0xFF);
		subaddr|=(((byte)255 << 8) & 0xFF00);
		subaddr|=(((byte)255 << 16) & 0xFF0000);
		subaddr|=(((byte)255 << 24) & 0xFF000000);
		return subaddr<<(32-num);
	}
	
	/**
	 * byte型のIPアドレスをint型にして返す
	 * @param addr IPの各オクテット配列
	 * @return IPアドレスのint型
	 */
	public static int getIp4AddressOfInt(byte addr) {
		int address=0;
		address  = addr[3] & 0xFF;
		address |= *1 {
			return null;
		}
		byte address = new byte[4];
		for(int i=0;i配列からbyteのIPアドレスを作成する。
	 * @param addr String型のIPアドレス
	 * @return byteのIPアドレス。作成出来なければnullを返す
	 */
	public static int getIp4addressOfInt(String addr) {
		byte address = getIp4addressOfByte(addr);
		return revisionIp4addressOfInt(address);
	}
	
	
	/**
	 * string配列のデータからipアドレスを作成可能かを確認するメソッド
	 * 
	 * @param addr 数字の配列。長さは4つ。
	 * @return ipアドレス作成が可能ならばtrue それ以外は全てfalse
	 */
	public static boolean validateIpv4(String addr) {
		if(addr.length != 4) {
			return false;
		}
		boolean flag = true;
		for(int i=0;i


次回はIPv6の方にも挑戦してみます。

*1:addr[2] << 8) & 0xFF00); address |= ((addr[1] << 16) & 0xFF0000); address |= ((addr[0] << 24) & 0xFF000000); return address; } /** * byte型のIPアドレスを補正して返す * @param addr IPアドレスの各オクテット配列 * @return 補正されたint配列 */ public static int revisionIp4addressOfInt(byte addr) { int address=new int[4]; address[3] = addr[3] & 0xFF; address[2] = addr[2] & 0xFF; address[1] = addr[1] & 0xFF; address[0] = addr[0] & 0xFF; return address; } /** * int型のIPアドレスをbyte配列として返す * @param addr int型のIPアドレス * @return byte配列のIPアドレス */ public static byte getIp4addressOfByte(int addr) { byte address = new byte[4]; address[0]= (byte)((addr >>> 24)&0xFF); address[1]= (byte)((addr >>> 16)&0xFF); address[2]= (byte)((addr >>> 8)&0xFF); address[3]= (byte)(addr&0xFF); return address; } /** * string配列からbyteのIPアドレスを作成する。 * @param addr String型のIPアドレス * @return byteのIPアドレス。作成出来なければnullを返す */ public static byte getIp4addressOfByte(String addr) { if(addr == null || addr.length != 4) { return null; } if(!validateIpv4(addr