CIDR
がSub net mask
の場合、Java lib
/function/trickを使って計算する方法はありますか? )=のthnx男与えられたネットマスクからCIDRを計算する -
PZPを私はしばらくの間、探していると私は見つけることができるすべてがCIDR -> Netmask
からであり、私はそれをNetmask -> CIDR
arroundの他の方法を必要と...イムないという便利なJava
ではなく、多くのことを読んで喜んでイム=)
CIDR
がSub net mask
の場合、Java lib
/function/trickを使って計算する方法はありますか? )=のthnx男与えられたネットマスクからCIDRを計算する -
PZPを私はしばらくの間、探していると私は見つけることができるすべてがCIDR -> Netmask
からであり、私はそれをNetmask -> CIDR
arroundの他の方法を必要と...イムないという便利なJava
ではなく、多くのことを読んで喜んでイム=)
をApacheのネット・ジャー(クラスSubnetUtils)を見てください
簡単な例を挙げました。これによりInetAddress
がcidr値に変換され、InetAddress
が有効なネットマスクであることが検証されます。
テスト入力は255.255.128.0
です。出力cidrは17
です。
package com.stackoverflow._19531411;
import java.net.InetAddress;
public class NetmaskToCIDR {
public static int convertNetmaskToCIDR(InetAddress netmask){
byte[] netmaskBytes = netmask.getAddress();
int cidr = 0;
boolean zero = false;
for(byte b : netmaskBytes){
int mask = 0x80;
for(int i = 0; i < 8; i++){
int result = b & mask;
if(result == 0){
zero = true;
}else if(zero){
throw new IllegalArgumentException("Invalid netmask.");
} else {
cidr++;
}
mask >>>= 1;
}
}
return cidr;
}
public static void main(String[] args) throws Exception {
InetAddress netmask = InetAddress.getByName("255.255.128.0");
System.out.println(convertNetmaskToCIDR(netmask));
}
}
@擬似コードのためのクレジット
Apache SubnetUtils moduleのtoCidrNotation
関数を使用してこれを行うことができます。 Here's a Java example.