关闭

C#IPEndPoint中IP4地址字符串到long/uint的转换-转载修订

标签: IP地址longuint转换
385人阅读 评论(0) 收藏 举报
分类:

原文链接:http://www.cnblogs.com/luxiaoxun/p/3376682.html

我直接Copy原作中的函数使用在C#中,把形如"192.168.1.102"的IP转换为整数传递,在新的函数中创建

IPEndPoint时,ipe的值为102.1.168.192:4000 【clientPort传递的是4000】

IPEndPoint ipe = new IPEndPoint((long)clientIP, clientListenPort);


可是很多讲IP协议的地方都是按照原作的逻辑讲述的,为什么C#在这里会颠倒过来呢?

把原作代码略作修改,然和就可以正常联机了。但还是搞不明白IPEndPoint这是玩儿的哪一出。。。

<span style="white-space:pre">	</span>private uint IPStrToInt32(string IP)
        {
            char[] separator = new char[] { '.' };
            string[] items = IP.Split(separator);//实际测试发现应该是低位在前
            //return uint.Parse(items[0]) << 24
            //        | uint.Parse(items[1]) << 16
            //        | uint.Parse(items[2]) << 8
            //        | uint.Parse(items[3]);
            return uint.Parse(items[3]) << 24 | uint.Parse(items[2]) << 16 
                | uint.Parse(items[1]) << 8 | uint.Parse(items[0]);
        }


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17702次
    • 积分:328
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条
    文章分类