前回言っていたソースコードです。
といっても、大元の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