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

原文链接: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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值