/// 将IP地址字符串转换成等效的数字值
        /// </summary>
        /// <param name="ip">IP地址</param>
        /// <returns>返回IP数字值</returns>
        public static int IPToInt ( string ip )
        {
            String[] Ip = ip.Split('.');
                
           return;
        }
怎么返回?

解决方案 »

  1.   

    你的方式就是去掉了IP地址段中的.组成的int类型,int32的最大值2,147,483,647,大多数IP地址都超过了这个值,所以弄Int64的类型来存储int64 _return = Convert.ToInt64(ip.Replace(".", ""));
      

  2.   

    public static int IPToInt ( string ip )
            {
                int retval = 0;
                String[] aip = ip.Split('.');
                for(int i=0;i<4;i++)
                {
                    retval = retval + (int)aip[4-i] << 8*i;
                }
                return retval;
            }
      

  3.   

    to veryhappy(wx.net):int 32位,4个字节,每个字节可以存放 0-255的数字
      

  4.   

    Private string GetHostName()
    {
            String strIp ;
            String strHostName= Dns.GetHostName;
            IPHostEntry ipEntry  = Dns.GetHostByName(strHostName)
            IPAddress  IpAddr() = ipEntry.AddressList
            For(i=0,i< IpAddr.Length ;i++)
           {            
             strIp = IpAddr(i).ToString()
            }
    }
      

  5.   

    不过应该是uint,而不是intpublic static int IPToInt ( string ip )
            {
                uint retval = 0;
                String[] aip = ip.Split('.');
                for(int i=0;i<4;i++)
                {
                    retval = retval + (uint)aip[4-i] << 8*i;
                }
                return (int)retval;
            }
      

  6.   

    to viena(EQ<0) :
      能解释一下你的程序吗?谢谢!
      

  7.   

    以"."分割到4个元素的数组,
    从最后一个开始,强制转为32位无符号整数
    因为范围小于255,只有低8位有效,高位全是0
    下一个8位,左移8位,放到9-16位
    一次累加,得到一个32位Unit
    最后强制装换为有符号数,比如最大值会变为-1
      

  8.   

    to viena(EQ<0),
    在下面的语句中,
    retval = retval + (uint)aip[4-i] << 8*i;
    aip[4-i]为"string"类型,无法转换为"uint"
      

  9.   

    /// 将IP地址字符串转换成等效的数字值
            /// </summary>
            /// <param name="ip">IP地址</param>
            /// <returns>返回IP数字值</returns>
            public static Int64IPToInt ( string ip )
            {
                Int64 result = Convert.ToInt64(ip.Replace(".", ""));
                return result ;
            }