如何判断一个IP地址在某个区间只内,例如在(255.0.0.1-238.0.0.1)之间,越简单越好。最先回答者全给分,顶者有分,回复者有分

解决方案 »

  1.   

    将ip按“.”split,然后比较4个数字即可。
      

  2.   

    按照你上面的,
    只要判断前面的一部分就行如 int value=int.Parase(ip.substring(0,ip.indexof(".")));
    if(value>=255 && value<238)
    {
    return true;
    }
      

  3.   

    using System.Net;
    long ipstar=  IPAddress.Parse("255.0.0.1").Address;
    long ipend = IPAddress.Parse("238.0.0.1").Address;然后同样取得给定ip的long值,判断是否在ipstar-ipend区间内就成了
      

  4.   

            static void Main()
            {
                string ip1 = "238.0.0.1";
                string ip2 = "255.0.0.1";
                string ipt = "240.1.2.3";
                uint u1 = GetUint(ip1);
                uint u2 = GetUint(ip2);
                uint ut = GetUint(ipt);
                if(u1 > u2)
                {
                    uint t = u1;
                    u1 = u2;
                    u2 = t;
                }
                Console.WriteLine(u1 <= ut && ut <= u2);
            }
            static uint GetUint(string ip)
            {
                IPAddress.Parse(ip);//判断格式是否正确。如果格式有误,这里会抛出一个FormatException
                string [] s = ip.Split('.');
                return uint.Parse(s[0]) << 24 | uint.Parse(s[1]) << 16 | uint.Parse(s[2]) << 8 | uint.Parse(s[3]);
            }
      

  5.   

    这个东西在 LittleEndian 平台上是不对的。
    数值在cpu内部的存储是反的。
      

  6.   

    简单的思路是全部字符串通过IPAddress.Parse编程IPAddress,然后通过GetAddressBytes拿到byte数组来直接算。因为可以做位运算,应该会比较快。
      

  7.   

    "简单的思路是全部字符串通过IPAddress.Parse编程IPAddress,然后通过GetAddressBytes拿到byte数组来直接算。因为可以做位运算,应该会比较快。"比较强悍!!!!顶
      

  8.   

    其实一个ip地址对应的有一个long的类型的数值的
    这个你可以从网上很多例子中查到找的
    既然一个ip地址对应一个long 
    那么你可以把区间设置为  大于等于小的ip地址对应的long型数字,然后小于等于大ip地址对应的大的long型的数字
    就可以取到该ip地址对应的区间了
    其实做法就是把ip地址转成对应的long型的数字
    如果你懂基础,其实也就是 对每个数字进行多少位的便宜  比如 255<<24
    还是要自己理解的有点7楼说的味道
      

  9.   

    将IP地址转换成无符号整数,然后判断就可以了/// <summary>
    /// 将IP地址转换成无符号整数
    /// </summary>
    /// <param name="ip">IP地址</param>
    /// <returns>无符号整数</returns>
    public static uint ConvertIpToUint(string ip)
    {
      uint ipvalue = 0;
      System.Net.IPAddress ipadress;
      if (System.Net.IPAddress.TryParse(ip, out ipadress))
      {
         string[] ips = ipadress.ToString().Split('.');
         for (int i = 0; i < ips.Length; i++)
         {
            ipvalue += uint.Parse(ips[i]) * (uint)Math.Pow(256, ips.Length - 1 - i);
          }
       }
       return ipvalue;