今天的我做了些什么

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

posted @ 2005-05-11 21:38  Henry Liu  阅读(351)  评论(0编辑  收藏  举报