ip地址,除了用字符串表示,不是还可以获取到Long型或byte[ ]型的表示吗
然后执行位运算就行了啊

解决方案 »

  1.   

    你用IPAddress.Parse或.TryParse先把字符串转成IP
    再获取ip.Address,是个long型,然后计算
      

  2.   


    IPAddress ip = IPAddress.Parse("192.128.1.23");
    IPAddress mask = IPAddress.Parse("255.255.0.0");byte[] bytes = ip.GetAddressBytes().Zip(mask.GetAddressBytes(), (i, m) => (byte)(i & m)).ToArray();
    string result = new IPAddress(bytes).ToString(); // result = 192.168.0.0
      

  3.   

    uint iptonum(string ip)
    {
        int[] t = ip.Split('.').Select(x => int.Parse(x)).ToArray();
        return (t[0] << 24) + (t[1] << 16) + (t[2] << 8) + t[3];
    }
    然后再用 & 位运算。
      

  4.   


    在计算机网络中,ip与掩码进行与运算,可以得到网络位。这种转换都是通过位操作实现的。
    ipv4中,网络位、ip地址、掩码都是包括4个字段,每个字段8位,一共32位,表示为4个字节。原理就是把ip地址、掩码转换成32个0/1序列,进行与运算,就可以得到网络位。ip和掩码通常自然表示成192.168.1.23,是一个字符串,点(.)分割4个字段每个字段是一个十进制数字。可以使用c#的convert类进行转换。可以自己使用字符串的分割方法进行转换。最后,封装成一个函数,参数是ip和掩码,返回值是网络位,就OK了