int DigitIpToStrIp(unsigned long ip, char *strip)
{
unsigned long temp;
temp = ip << 8 * 3;
unsigned int IP_first = temp >> 8 * 3;
temp = ip << 8 * 2;
unsigned int IP_second= temp >> 8 * 3;
temp = ip << 8 * 1;
unsigned int IP_thrid = temp >> 8 * 3;
unsigned int IP_fourth=ip>> 8 * 3;
sprintf(strip,"%d.%d.%d.%d",IP_first,IP_second,IP_thrid,IP_fourth );
return yes;
}
unsigned long StrIpToDigitIp(const char* Ip , size_t IPlen)
{
if (IPlen < 7)
return -1;
unsigned long ret;
char copy_ip[15] = {0};
memcpy(©_ip , Ip , IPlen);
unsigned short int token[4], tokenindex = 0 , count = 0;
for (unsigned short int index = 0;index < IPlen; index++)
{
if (copy_ip[index] == '.')
{
copy_ip[index] = '\0';
token[3 - count] = atoi(©_ip[tokenindex]);
tokenindex = index + 1;
count ++;
}
}
if (count != 3)
return -1;
token[0] = atoi(©_ip[tokenindex]);
unsigned char temp[4];
memcpy(&temp[0] , &token[3] , sizeof(unsigned char));
memcpy(&temp[1] , &token[2] , sizeof(unsigned char));
memcpy(&temp[2] , &token[1] , sizeof(unsigned char));
memcpy(&temp[3] , &token[0] , sizeof(unsigned char));
memcpy(&ret , &temp[0] , sizeof(unsigned long ));
return ret;
}
unsigned long strip_digip(char *ip,int iplen)
{
//192.168.52.11
unsigned long ret = 0;
char temp_ip[16] = {0};
memcpy(temp_ip,ip,iplen);
char *pos = temp_ip;
int n = 0 , r = 0;
char tmp_buf[8] = {0};
unsigned char tmp_num;
unsigned char num_buf[4] = {0};
int num_idx = 0;
while(1)
{
r = sscanf(pos,"%[^.].%n",tmp_buf,&n);
if(r==1)
{
pos += n;
tmp_num = atoi(tmp_buf);
memcpy(&num_buf[num_idx],&tmp_num,1);
num_idx++;
}
else
break;
}
if(num_idx == 4)
memcpy(&ret,num_buf,num_idx);
return ret;