C#.net中,关于两个ip(是字符串)的比较计算方法

来源:百度知道 编辑:UC知道 时间:2024/05/04 16:50:54
比如:在ACESS数据库里
字段A 字段B 字段C
58.17.248.0 58.17.249.255 重庆市涪陵区的ip
58.18.135.57 58.18.135.98 内蒙古赤峰市的ip

那么现在有一个ip:58.18.135.23判断是哪里的,要查询。在C#.net里怎么比较出是内蒙古赤峰市的ip,经测试不能用>=和<=

首先是你得知道内蒙古的IP段,好吧我们先假设58.18.135.*是赤峰的IP段,当然肯定不止这么少,你自己去查下赤峰 IP段,这不重要,重要是解决问题的办法:
你直接把IP取出来装在String变量里,也就是先定义一个string变量接IP段
string strIP = 什么什么什么;//取IP地址,我不知道你什么途径取得的,自己写
//然后把String按照"."分割装在string数组里
char[] separator = { ',' };
String[] chStrIP = new String[4];//因为IP段都是被"."分成4部分
chStrIP = strIP.Split(separator);
//再然后你把string 数组转成int型的
int[] chIntIP = new int[4];
for(int i=0;i<4;i++)
{
int.TryParse(chStrIP[i], out chIntIP[i]);
}
然后你就可以把chIntIP[0],chIntIP[1],chIntIP[2],chIntIP[3]取出来了,都是听话的整形,想怎么判断怎么判断,只要你知道赤峰的代码区间或者代码段,这问题就解决了,我解释的这么好,多给点分吧,再问不难,哈哈

一般情况下,数据库中的IP地址不这样保存。

而是转化成一串数据的形式。

你分析一下求真数据库就清楚了。

是字符串,当然不能用>=和<=

先把这截取,再转化成int型吧

酱油通道
把IP地址去掉".",再转成数字

这个问题容易解决,不用转换为什么整形,先从数据库把所有的字段取出来,存入一个list集合,然后循环比较 你要判断的字符串截取他的前9位也就是58.18.135 (如果不考虑子网掩码)这些叫网络位,如果你要比较的和你list中的前9位一样,当然你就知道是哪的了,懂了吗?