#include <stdio.h>
//---------------------------------------------------------------------
unsigned long ip2long(const char* ip){
unsigned char a, b, c, d;
sscanf(ip, "%hhu.%hhu.%hhu.%hhu", &a, &b, &c, &d);
return ((a << 24) | (b << 16) | (c << 8) | d);
}
//---------------------------------------------------------------------
void long2ip(unsigned long ip, char buf[]){
int i = 0;
unsigned long tmp[4] = {0};
for(i = 0; i < 4; i++){
tmp[i] = ip & 255;
ip = ip >> 8;
}
sprintf(buf, "%lu.%lu.%lu.%lu", tmp[3], tmp[2], tmp[1], tmp[0]);
}
//---------------------------------------------------------------------
int main(){
char* ip = "192.168.1.2";
char buf[16] = {0};
unsigned long ip_long = 0;
ip_long = ip2long(ip);
printf("%lu\n", ip_long);
long2ip(ip_long, buf);
puts(buf);
return 0;
}
#include <stdio.h>
#include < winsock.h >char * long2ip(u_long in );
u_long ip2long( char * ip);
int main()
{
char p[ 16 ];
printf( " 请输入IP地址:\n " );
scanf( " %s " ,p);
u_long l = ip2long(p);
printf( " %s\n " ,long2ip(l));
int inum = 0 ;
scanf( " %d " ,inum);
return 0 ;
}
char * long2ip(u_long in )
{
u_char * p;
p = (u_char * )( & in );
static char output[ 16 ];
_snprintf_s(output, 16 , 16 , " %d.%d.%d.%d " ,p[ 0 ],p[ 1 ],p[ 2 ],p[ 3 ]);
return output;
}
u_long ip2long( char * ip)
{
u_char addr[ 16 ];
sscanf(ip, " %d.%d.%d.%d " ,addr,addr + 1 ,addr + 2 ,addr + 3 );
u_long * vl = (u_long * )( & addr);
return * vl;
}