今天的我做了些什么
最近想做一个关于IP地址查询的系统,当前很流行的把开型如127.0.0.1的IP 转换为2130706433式的整数保存在数据中,非常实用,就做了一个
下面是遇到的问题,我想把对应的IP数据库值转换成IP值,可是出问题了
public string GetIP(long n)
{
int ip_0,ip_1,ip_2,ip_3;
long nip_0,nip_1,nip_2;
string p1,p2,p3,p4;
ip_0 =Convert.ToInt32(n/(256*256*256));
nip_0 =(ip_0)*256*256*256;
return Convert.ToString(nip_0)+"@"+ip_0.ToString()+n.ToString();
ip_1=Convert.ToInt32((n-nip_0)/(256*256));
nip_1=ip_1*256*256;
ip_2 =Convert.ToInt32((n-nip_1-nip_0)/256);
nip_2 =ip_2*256;
ip_3= Convert.ToInt32(n-nip_1-nip_0-nip_2);
p1=Convert.ToString(ip_0);
p2=Convert.ToString(ip_1);
p3=Convert.ToString(ip_2);
p4=Convert.ToString(ip_3);
//return p1+"."+p2+"."+p3+"."+p4;
}
当我运行转换的时候,总是出错,结果一查输出的nip_0,成了负值,真是百思不得其解。
我就纳闷了,仔细想了想,可能是在数据转换的时候,值丢失了,导致负数。
输入202.102.240.91 结果发现经过计算nip_0为-2147483648(long),而转换成的数据库值为 n 2147483649 long,好奇怪哟!这个问题只有明天,再去研究了。
下面是遇到的问题,我想把对应的IP数据库值转换成IP值,可是出问题了
























当我运行转换的时候,总是出错,结果一查输出的nip_0,成了负值,真是百思不得其解。
我就纳闷了,仔细想了想,可能是在数据转换的时候,值丢失了,导致负数。
输入202.102.240.91 结果发现经过计算nip_0为-2147483648(long),而转换成的数据库值为 n 2147483649 long,好奇怪哟!这个问题只有明天,再去研究了。