【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