将点分十进制IP地址转为对应的数值

@老徐  May 13, 2011

因为有很多时候需要使用的IP地址并不是点分十进制(如192.168.1.1)格式,而是对应的数值(如3194548456),例如要使用某IP库的时候,IP库里保存的就是IP对应的数值形式,这时候就需要进行转换,在网上找了下,发现资料很少,也有不少人不知道转换的方法,自己写了个转换函数如下,有不知道算法的可以参考一下:

通用方法:

/// <summary>  
/// IP地址转换函数  
/// </summary>  
/// <param name="ip">点分十进制IP</param>  
/// <returns>转换后的数值</returns>  
protected Int64 GetIpToInt(string ip)  
{  
    string[] arrIP = ip.Split('.');  
    Int64 IntIP = Int64.Parse(arrIP[0]) * 255 * 255 * 255 + Int64.Parse(arrIP[1]) * 255 * 255 + Int64.Parse(arrIP[2]) * 255 + Int32.Parse(arrIP[3]);  
    return IntIP;  
}

C#中提供的方法:

//字符串转换为数字  
System.Net.IPAddress ipaddress = System.Net.IPAddress.Parse("192.168.1.1");  
long dreamduip = ipaddress.Address;
 

//数字转换为字符串  
System.Net.IPAddress ipaddress = System.Net.IPAddress.Parse("3194548456");  
string strdreamduip = ipaddress.ToString();

添加新评论