c#/.net提供的方法:把整型值和字符串IP互转!

精贴 置顶
1757 0

.net提供的方法转换IP地址
// 字符串转换为数字
System.Net.IPAddress ipaddress = System.Net.IPAddress.Parse("216.20.222.72");
long dreamduip = ipaddress.Address;// 结果 1222513880

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

通用转换函数

 程序代码
/// <summary>将IP地址格式化为整数型</summary>
/// <param name="ip"></param>
/// <returns></returns>
public static long IpToInt(string ip)
{
    char[] dot = new char[] { '.' };
    string[] ipArr = ip.Split(dot);
    if (ipArr.Length == 3)ip = ip + ".0";
    ipArr = ip.Split(dot);long ip_Int = 0;
    long p1 = long.Parse(ipArr[0]) * 256 * 256 * 256;
    long p2 = long.Parse(ipArr[1]) * 256 * 256;
    long p3 = long.Parse(ipArr[2]) * 256;long p4 = long.Parse(ipArr[3]);
    ip_Int = p1 + p2 + p3 + p4;return ip_Int;
}


我们知道 IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。

按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。
而c#中int32的数就是四个字节的,但是符号要占掉一位所以就不够了,但是无符号的 UInt32 就没有这样的问题。

所以理论上讲:UInt32是可以完整保存一个IP地址的。那下面的两个方法就是对IP与UInt32之间的互转换。

 程序代码

public static string Int2IP(UInt32 ipCode) {
            byte a = (byte)((ipCode & 0xFF000000) >> 0x18);
            byte b = (byte)((ipCode & 0x00FF0000) >> 0xF);
            byte c = (byte)((ipCode & 0x0000FF00) >> 0x8);
            byte d = (byte)(ipCode & 0x000000FF);
            string ipStr = String.Format("{0}.{1}.{2}.{3}", a, b, c, d);
            return ipStr;
        }

 

 程序代码

public static UInt32 IP2Int(string ipStr) {
            string[] ip = ipStr.Split('.');
            uint ipCode = 0xFFFFFF00 | byte.Parse(ip[3]);
            ipCode = ipCode & 0xFFFF00FF | (uint.Parse(ip[2]) << 0x8);
            ipCode = ipCode & 0xFF00FFFF | (uint.Parse(ip[1]) << 0xF);
            ipCode = ipCode & 0x00FFFFFF | (uint.Parse(ip[0]) << 0x18);
            return ipCode;
        }

  • 没有任何评论
今日天气 ···

···

···

···

热门排行
用ASP实现网页BBS 2010-11-01
CSS cursor鼠标样式一览表 2012-06-25
.NET后台写JS代码 2011-11-03
网站地址多出jdfwkey的问题解析及... 2010-08-25
数据库xxx的日志已满,请备份该数... 2013-07-19
百度、google、Yahoo网站地图制作... 2011-01-30
<a>标签的伪类书写顺序问题... 2010-09-04
什么是长尾关键词? 2010-09-24
CEO名言 2010-08-31
Mysql 主从数据库同步 2010-09-12
博主推荐
本个人博客微信公众平台上线啦~~... 2013-10-13
饼哥网络互联上线啦~~要买域名空... 2013-09-20
网站title标题如何正确修改不会被... 2013-08-26
饼哥通讯录系统上线啦,欢迎大家... 2013-08-24
ASP .NET MYSQL 的简单分页 并不... 2013-08-19
网站有弹窗广告这样的站点,百度... 2013-08-17
做淘宝SEO优化需要注意的8大问题 2013-08-17
淘宝网怎么做SEO优化 2013-08-17
站长们要学习的“苍井空精神” 2013-08-17
苹果公司今日发布了iOS 7第五个开... 2013-08-07
随便看看
鼠标实现画图的Java小程序 2013-06-26
数据类型ntext 和varchar 在equa... 2010-11-25
浅谈如何构建高效的MySQL分页 2013-08-19
一个简单的asp.net伪静态实例 2010-09-11
域名跳转代码 2013-05-28
让用户快速加入网站QQ群代码!鼠... 2013-12-02
Windows7安全模式下修复系统故障 2010-11-23
饼哥通讯录系统上线啦,欢迎大家... 2013-08-24
Java趣味编程:经典的农夫养牛问... 2013-06-21
55条SEO必备技巧 2010-09-07
RSS新闻
传媒新闻
CSDN
八卦新闻
女性新闻
台湾新闻
互联网
军事-新浪博客
IT-新浪博客
汽车新闻
游戏新闻
国际新闻
国内新闻
体育新闻
我的微博
北京 上海 杭州 深圳 广州 成都