日期:2014-05-19  浏览次数:21064 次

将ip地址转换成整数,他的算法是什么?
IPAddress有一个Address属性(虽然已经过时)。可以将127.0.0.1地址形式转换成整数,他这里是怎么算得?

------解决方案--------------------
public int AddrToNumber(string AAddr)
{
if (AAddr == string.Empty || AAddr == null) return 0;
string[] vAddrs = AAddr.Split(new string[] { ". " },
StringSplitOptions.RemoveEmptyEntries);
if (vAddrs.Length != 4) return -1;
int Result = 0;
byte b;
if (byte.TryParse(vAddrs[0], out b))
Result |= b < < 24;
if (byte.TryParse(vAddrs[1], out b))
Result |= b < < 16;
if (byte.TryParse(vAddrs[2], out b))
Result |= b < < 8;
if (byte.TryParse(vAddrs[3], out b))
Result |= b;
return Result;
}
------解决方案--------------------
转换方法:
//IP地址StrIp
string StrIp= "192.168.0.1 ";
//取出IP地址去掉‘.’后的string数组
string [] Ip_List = StrIp.Split ( ". ".ToCharArray ());
string X_Ip = " ";
//循环数组,把数据转换成十六进制数,并合并数组(3dafe81e)
foreach(string ip in Ip_List)
{
X_Ip += Convert.ToInt16 (ip).ToString ( "x ");
}

//将十六进制数转换成十进制数(1034938398)
long N_Ip = long.Parse (X_Ip, System.Globalization.NumberStyles.HexNumber);