掩碼位轉換成子網掩碼的Java實現
阿新 • • 發佈:2019-02-01
IP/掩碼位來表示一段IP範圍,那麼怎麼通過掩碼位計算出對應的子網掩碼呢?基本概念:掩碼位即網路地址的位數。例如192.168.11.130/31表示網路地址有31位,主機地址有1位,那麼31對應的子網掩碼就是255.255.255.254(31個1+0)通過移位計算,得到主機最大值,和網路地址最大值,圖解原理如下:計算掩碼位,就是得到掩碼位的二進位制序列,然後每隔8位轉換為十進位制。Java的Integer.parseInt可以將指定進位制的字串序列轉換為int型別。輸入一個掩碼位,得到對應的子網掩碼的點分十進位制表示的程式碼如下:
上述程式碼即可輸出1-31掩碼位對應的子網掩碼列表。其中0xFFFFFFFF << (32 - i)就是得到對應的二進位制序列。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)); }