gpt4 book ai didi

java - 从给定的网络掩码计算 CIDR - Java

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:54 24 4
gpt4 key购买 nike

有没有办法使用任何 Java lib/function/trick 计算给定 Sub net maskCIDR?我一直在寻找一段时间,我能找到的所有东西都是来自 CIDR -> Netmask 我需要它的另一种方式是 Netmask -> CIDR ...我不是那个Java 很方便,但我愿意阅读很多书 =) 谢谢大家

PzP =)

最佳答案

举了一个简单的例子。这会将 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));

}
}

伪代码归功于@https://stackoverflow.com/a/10090956/260633

关于java - 从给定的网络掩码计算 CIDR - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19531411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com