【Java】Prefix lengthからNetwork maskに変換する方法
Javaでプレフィックス表記からネットワークマスクに変換する方法です。
import java.net.InetAddress; import java.net.UnknownHostException; public class CodeSample { public static void main(String args[]){ InetAddress inetAddr; for(int i = 1; i <= 32; i++){ inetAddr = prefixLengthToInetAddress(i); System.out.println("prefix length : " + i + " network mask : " + inetAddr.getHostAddress()); } } public static InetAddress prefixLengthToInetAddress(int prefixLength){ if(prefixLength < 0 || prefixLength > 32){ throw new IllegalArgumentException("Invalid prefix length (0 <= prefix <= 32)"); } int addrInt = 0xFFFFFFFF << (32 - prefixLength); byte[] addressBytes = { (byte) (0xFF & (addrInt >> 24)), (byte) (0xFF & (addrInt >> 16)), (byte) (0xFF & (addrInt >> 8)), (byte) (0xFF & addrInt) }; try{ return InetAddress.getByAddress(addressBytes); } catch(UnknownHostException e){ throw new AssertionError(); } } }
出力結果
prefix length : 1 network mask : 128.0.0.0 prefix length : 2 network mask : 192.0.0.0 prefix length : 3 network mask : 224.0.0.0 prefix length : 4 network mask : 240.0.0.0 prefix length : 5 network mask : 248.0.0.0 prefix length : 6 network mask : 252.0.0.0 prefix length : 7 network mask : 254.0.0.0 prefix length : 8 network mask : 255.0.0.0 prefix length : 9 network mask : 255.128.0.0 prefix length : 10 network mask : 255.192.0.0 prefix length : 11 network mask : 255.224.0.0 prefix length : 12 network mask : 255.240.0.0 prefix length : 13 network mask : 255.248.0.0 prefix length : 14 network mask : 255.252.0.0 prefix length : 15 network mask : 255.254.0.0 prefix length : 16 network mask : 255.255.0.0 prefix length : 17 network mask : 255.255.128.0 prefix length : 18 network mask : 255.255.192.0 prefix length : 19 network mask : 255.255.224.0 prefix length : 20 network mask : 255.255.240.0 prefix length : 21 network mask : 255.255.248.0 prefix length : 22 network mask : 255.255.252.0 prefix length : 23 network mask : 255.255.254.0 prefix length : 24 network mask : 255.255.255.0 prefix length : 25 network mask : 255.255.255.128 prefix length : 26 network mask : 255.255.255.192 prefix length : 27 network mask : 255.255.255.224 prefix length : 28 network mask : 255.255.255.240 prefix length : 29 network mask : 255.255.255.248 prefix length : 30 network mask : 255.255.255.252 prefix length : 31 network mask : 255.255.255.254 prefix length : 32 network mask : 255.255.255.255