如何在.Net下将IP地址转换成十进制数

时间:2006/5/21 16:22:10      阅读:4921          

      我们通常在BBS或网上下载的IP地址数据库中的IP地址并非是我们常见的格式(61.175.232.30),而是这种(1034938398)类型的数据,看起来这两个数据好像没有关连,很复杂,其实并不复杂,以“61.175.232.30”这个IP地址为例,IP地址转换成数字串方法如下:先将“61.175.232.30”转换为十六进制“3d.af.e8.1e”,然后去掉小数点后,变为“3dafe81e”,最后将这个十六进制数转换为十进制“1034938398”,那么“61.175.232.30”就变为“1034938398”了。

 1'IP地址
 2   Dim Ip As String =  "61.175.232.30" 
 3   '取出IP地址去掉‘.’后的string数组
 4   Dim Ip_List() As String =  Ip.Split(".".ToCharArray()) 
 5   Dim X_Ip As String =  "" 
 6   '循环数组,把数据转换成十六进制数,并合并数组(3dafe81e)
 7   Dim ip As String
 8   For Each ip In Ip_List
 9       X_Ip += Convert.ToInt16 (ip).ToString ("x")
10   Next
11 
12   '将十六进制数转换成十进制数(1034938398)
13   Dim N_Ip As Long =  Long.Parse(X_Ip,System.Globalization.NumberStyles.HexNumber)

      OK,就这样转换成功了,不信,你可以用windows的命令行工具测试一下,ping 61.175.232.30 和 ping 1034938398 的效果是一样的,都是指向 61.175.232.30 的。
评论
  • Re:如何在.Net下将IP地址转换成十进制数  (2006/8/16 15:16:23) by 飘萍 
        原来算法是这样的,一直不知道,现在知道了,谢谢。
  • Re:如何在.Net下将IP地址转换成十进制数  (2009/9/16 10:38:11) by 阿貓 

    here is the C# version


     

    public long ConvertIpToDEC(string ip_addr)
            {
                string ip = ip_addr;
                string[] Ip_list = ip.Split(".".ToCharArray());
                string x_ip = "";
                foreach (string tmpIp in Ip_list)
                {
                    x_ip += Convert.ToInt16(tmpIp).ToString("x");
                }

                long dec_ip = long.Parse(x_ip, System.Globalization.NumberStyles.HexNumber);
                return dec_ip;
           
            }

标 题:
 
姓 名:
 
主 页:

验证码:

评论:
 

Because of the cache,you may see your comments several minutes later.