#include int stoipa(char *s) { int ipa, i; int A[4]; char B[4]; sscanf(s,"%d.%d.%d.%d",A,A+1,A+2,A+3); for(i=0;i<4;i++) B[i] = (char) A[i]; ipa = *((int *) B); return ipa; } char * ipatos(int ipa) { char * A; A = (char *) malloc(16); // allocate 16 bytes sprintf(A,"%d.%d.%d.%d",*((unsigned char *)(&ipa)), *(((unsigned char *)(&ipa)) + 1), *(((unsigned char *)(&ipa)) + 2), *(((unsigned char *)(&ipa)) + 3)); return A; } int main(int argc, char* argv[]) { int ip; ip = stoipa(argv[1]); printf("4-byte ip == %d\n",ip); printf("original string : %s\n",ipatos(ip)); exit(0); }