#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;
}