IP地址与无符号整数的互换

今天搞了一个QQ的纯真版IP数据库,想到了IP地址与无符号整数互换的问题,在网上找了很多,但大多数有这样那样的问题,特别是由无符号整数转换为IP地址的比较少,后来找到一个JS版的,对其进行了C#化,测试了一下,基本正常,用得到的朋友请支持一下:

/// <summary>
/// 将无符号整数转换成IP地址
/// </summary>
/// <param name="ipvalue">无符号整数</param>
/// <returns>IP地址</returns>
public static string ConvertUintToIp(uint ipvalue)
{
    string ip = string.Empty;
    if (ipvalue >= 0 && ipvalue <= 4294967295)
    {
      for (int i = 3; i >= 0; i--)
      {
        ip += Math.Floor(ipvalue / Math.Pow(256, i));
        if (i > 0)
        {
           ip += ".";
           ipvalue %= (uint)Math.Pow(256, i);
        }
      }
    }
    return ip;
}
/// <summary>
/// 将IP地址转换成无符号整数
/// </summary>
/// <param name="ip">IP地址</param>
/// <returns>无符号整数</returns>
public static uint ConvertIpToUint(string ip)
{
  uint ipvalue = 0;
  System.Net.IPAddress ipadress;
  if (System.Net.IPAddress.TryParse(ip, out ipadress))
  {
     string[] ips = ipadress.ToString().Split('.');
     for (int i = 0; i < ips.Length; i++)
     {
        ipvalue += uint.Parse(ips[i]) * (uint)Math.Pow(256, ips.Length - 1 - i);
      }
   }
   return ipvalue;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值