#include<stdio.h>
static unsigned int ipstr2num(char* str)
{
unsigned char num[4]={0};
char tmp[3];
int n = 0,value=0;
// 最多转化四次
for(int i=0;i<4;i++)
{
// 每次最多转化3位字符
for(int j = 0;j<3;j++)
{
if((*str == '.') || (*str == '\0'))
break;
tmp[j] = *str;
value = value * 10 + tmp[j] - '0';
str += 1;
}
num[n] = value;
value = 0;
if(*str == '\0')
{
break;
}
else
{
str += 1;
n += 1;
}
}
// 移位拼成一个unsigned int
return ((unsigned int)(num[3]<<24) | (unsigned int)(num[2]<<16) | (unsigned int)(num[1]<<8) | (unsigned int)(num[0]) );
}
int main()
{
char str[]="255.255.255.255";
int num=0;
num = ipstr2num(str);
printf("%x",num);
return 0;
}