直接用android4.2.2的源码来说话:
frameworksaseservicesjavacomandroidserverNetworkManagementService.java
int prefixLength = NetworkUtils.netmaskIntToPrefixLength( (int)Long.parseLong(mask, 16));
-->frameworksasecorejavaandroid etNetworkUtils.java
public static int netmaskIntToPrefixLength(int netmask) {
return Integer.bitCount(netmask); //返回指定 int 值的二进制补码表示形式的 1 位的数量。
}
所以PrefixLength就是取掩码int形式的补码的位数。