ip地址转换

char* ip_long2str(const unsigned long ip, char *pDest)
{
unsigned char pTmp[4]={0};

*(unsigned int*)pTmp=ip;
sprintf(pDest, "%d.%d.%d.%d", *(pTmp+0),*(pTmp+1),*(pTmp+2),*(pTmp+3));

return pDest;
}

int ATOI(const char *pSrc, const int size, unsigned char *iDest)
{
int i=0;

while(*(pSrc+i) && i<size && (*iDest=*iDest*10+*(pSrc+i)-'0') && ++i);

return *iDest;
}

unsigned long ip_str2long(const char *pSrc, unsigned long *ip)
{
int i=0;
int j=0;
int k=0;
int len=strlen(pSrc);
unsigned char pTmp[4]={0};

if (strlen(pSrc)>4)
{
while (1)
{
if ('.'==*(pSrc+i))
{
ATOI(pSrc, k, pTmp+j);
j++;
pSrc+=i+1;
i=k=0;
}
else if (*(pSrc+i)=='\0')
{
ATOI(pSrc, k, pTmp+j);
break;
}

k++;
i++;
}
}
else
{
strcpy((char*)pTmp,pSrc);
}

*ip=*(unsigned int*)pTmp;

return *ip;
}

int main()
{
char pStr[33]={0};
unsigned long ip=0;
cout<<ip_str2long(ip_long2str(270174900, pStr), &ip)<<endl;

return 0;
}

原文地址:https://www.cnblogs.com/ccmfc/p/2279697.html