【解决方案】关于IP地址字符串拆分组装,以及大小比较、范围判断

关于IP地址字符串拆分组装,以及大小比较、范围判断,比较不容易。

但是,我们知道IP地址,实际上是四组十六进制的数字,这样就简单多了。

比如:
10.201.18.6–>
10->0A
201->C9
18->12
6->06
组合起来,就是0AC91206

10.201.18.201–>
10->0A
201->C9
18->12
6->C9
组合起来,就是0AC912C9

如果一个IP介于0AC91206和0AC912C9之间,那么该IP地址就在10.201.18.6 和10.201.18.201之间。

比较思路如下:
1、将IP地址拆解成4份,10.201.18.6 -->10,201,18,6
2、分别转换成【两位】的十六进制 10,201,18,6->0A,C9,12,06
3、组合成一个十六进制字符串:0A,C9,12,06–>0AC91206
4、将其转换成一个Long星整数,进行比较。

String StartIP = "";
String EndIP = "";
                
//四个texbox组装成一个IP地址
StartIP = int.Parse(IpStart1.Text).ToString("X2") +
		int.Parse(IpStart2.Text).ToString("X2") +
		int.Parse(IpStart3.Text).ToString("X2") +
		int.Parse(IpStart4.Text).ToString("X2");

EndIP = int.Parse(IpEnd1.Text).ToString("X2") +
		int.Parse(IpEnd2.Text).ToString("X2") +
		int.Parse(IpEnd3.Text).ToString("X2") +
		int.Parse(IpEnd4.Text).ToString("X2");

//将IP转换成数字
//是否在范围内,那就比较数字的大小范围吧!
Int64 ip=Convert.ToInt64(StartIP, 16);

//将数字转换成一个【八位的】十六进制主席
String IP = i.ToString("X8");

//IP的第一段
String ip1 = Convert.ToInt32(IP.Substring(0, 2), 16).ToString();
//IP的第二段
String ip2 = Convert.ToInt32(IP.Substring(2, 2), 16).ToString();
//IP的第三段
String ip3 = Convert.ToInt32(IP.Substring(4, 2), 16).ToString();
//IP的第四段
String ip4 = Convert.ToInt32(IP.Substring(6, 2), 16).ToString();

//用这四个段,组装成一个IP
String ip = $"{ip1}.{ip2}.{ip3}.{ip4}";

这样处理,就方便多了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵庆明老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值