如何修剪IP地址以获得它的前3部分

本文关键字:3部 地址 何修剪 修剪 IP | 更新日期: 2023-09-27 18:27:57

我需要修剪给定的IP地址以获得它的前3部分

示例:

"192.168.1.20"➨"192.168.1."
"29.6.60.241"➨"29.6.60."

如何修剪IP地址以获得它的前3部分

String result = input.Substring(0, input.LastIndexOf("."));

使用String.LastIndexOf()应该很容易。

编辑
使用该方法可以定位最后一个"."。然后你需要一个到的子字符串,并且(显然)包含这个"."。类似于:

string shortened = longIP.Substring(0,longIP.LastIndexOf(".")+1);
string ip= "192.168.1.100";
string partial = ip.Substring(0,ip.LastIndexOf("."));
string sHostName = Dns.GetHostName();
IPHostEntry ipE = Dns.GetHostByName(sHostName);
IPAddress[] IpA = ipE.AddressList;
for (int i = 0; i < IpA.Length; i++)
{
    if(IpA[i].AddressFamily == AddressFamily.InterNetwork)
    {
        Console.WriteLine("IP Address {0}: {1} {2} ", i, IpA[i].ToString() , sHostName);
        string[] x = IpA[i].ToString().Split('.');
        Console.WriteLine("{0}.{1}.{2}.", x[0], x[1], x[2]);
    }
}

在内部,IP地址(IPv4和IPv6)只是位字符串。IPv4适合32位,IPv6适合64位。因此,你的问题的真正答案是,只需使用逻辑AND运算屏蔽你想要保持的比特,并使其他比特为0。

在大多数情况下,您可以指定一个IP地址和一个掩码。规则是,要询问A是否与B相同,请检查掩码位为真的位。

这导致了一个常见的符号:人们写一个像124.51.3/17这样的IP地址,说第一部分描述了一个IP地址(可能是IPv4),/17意味着要考虑的是前17位。