随意的两个IP段,怎样判断他们是否有交集

任意的两个IP段,怎样判断他们是否有交集?
如题:在ASP.NET 环境下,任意的两个IP段,怎样判断他们是否有交集?如果有交集的话,求他们交集的部分。
------解决思路----------------------
什么叫有交集,给出两个例子来
------解决思路----------------------
你把IP转换为了再进行判断处理即可
 

/// <summary>
        /// 判断IP是否在IP段里
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="current"></param>
        /// <returns></returns>
        public static bool BetweenIP(string start, string end, string current)
        {
            bool result = false;

            if (current == "::1") current = "127.0.0.1";
            if (current == start) result = true;//如果指定的IP范围就是一个IP,那么直接匹配看是否相等
            else//如果指定IP范围 是一个起始IP范围区间
            {
                byte[] start_ip_array = Get4Byte(start);//将点分十进制 转换成 4个元素的字节数组
                byte[] end_ip_array = Get4Byte(end);
                byte[] ip_array = Get4Byte(current);

                bool tmpRes = true;
                for (int i = 0; i < 4; i++)
                {
                    //从左到右 依次比较 对应位置的 值的大小  ,一旦检测到不在对应的范围 那么说明IP不在指定的范围内 并将终止循环
                    if (ip_array[i] > end_ip_array[i] 
------解决思路----------------------
 ip_array[i] < start_ip_array[i])
                    {
                        tmpRes = false; break;
                    }
                }
                result = tmpRes;
            }
            return result;
        }

        /// <summary>
        /// 将IP四组值 转换成byte型
        /// </summary>
        /// <param name="ip"></param>
        /// <returns></returns>
        static byte[] Get4Byte(string ip)
        {
            string[] _i = ip.Split('.');

            List<byte> res = new List<byte>();
            foreach (var item in _i)
            {
                res.Add(Convert.ToByte(item));
            }

            return res.ToArray();
        }

------解决思路----------------------
不知道下面方法行不行
 
把起始ip地址转成数值,如192.168.0.1-192.168.0.255转成数值192<<24+168<<16+1 - 192<<24+168<<16+255

然后看这两个起始数值是否有交集
------解决思路----------------------
如果你所谓的"交集"就是对二进制进行与运算的话
直接把IP字符串转IP格式,然后获取IP的int型表示
两个int做&运算
------解决思路----------------------
有相同的数字段就算交集吗?

arraylist ar1=split(.)
arraylist ar2=split(.)
for(int i=0;i<ar1.lenght,i++)