最近想做一个关于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,好奇怪哟!这个问题只有明天,再去研究了。 相关文章: