1. 程式人生 > >掩碼位轉換成子網掩碼的Java實現

掩碼位轉換成子網掩碼的Java實現

IP/掩碼位來表示一段IP範圍,那麼怎麼通過掩碼位計算出對應的子網掩碼呢?基本概念:掩碼位即網路地址的位數。例如192.168.11.130/31表示網路地址有31位,主機地址有1位,那麼31對應的子網掩碼就是255.255.255.254(31個1+0)通過移位計算,得到主機最大值,和網路地址最大值,圖解原理如下:計算掩碼位,就是得到掩碼位的二進位制序列,然後每隔8位轉換為十進位制。Java的Integer.parseInt可以將指定進位制的字串序列轉換為int型別。輸入一個掩碼位,得到對應的子網掩碼的點分十進位制表示的程式碼如下:
for(int i=1;i<32;i++) {
			int ip = 0xFFFFFFFF << (32 - i);
			String binaryStr = Integer.toBinaryString(ip);
			StringBuffer buffer = new StringBuffer();
			for(int j=0;j<4;j++) {
				int beginIndex = j*8;
				buffer.append(Integer.parseInt(binaryStr.substring(beginIndex, beginIndex+8), 2)).append(".");
			}
			System.out.println("net mask "+i+" ,submask:"+buffer.substring(0,buffer.length()-1));
			
		}
上述程式碼即可輸出1-31掩碼位對應的子網掩碼列表。其中0xFFFFFFFF << (32 - i)就是得到對應的二進位制序列。