题解 | #整数与IP地址间的转换#

整数与IP地址间的转换

https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea

#include <stdio.h>
#include <string.h>
char A1[20], A2[20], A3[20], A4[20], A5[20];
char B1[20], B2[20], B3[20], B4[20], B5[20];
unsigned long long a1, a2, a3, a4, a5,b1, b2, b3, b4, b5;
char  ipc[50] ="10.3.3.193",  ipcnew[50];
unsigned long long ipi = 0;
int main() {
    int a, b, i;
    // scanf("%s",&ipchar);
    // strcpy(ipchar,"sahjk");
    int num = 0, left = 0, right = 0;

    scanf("%s",ipc);
    scanf("%llu",&ipi);

	// printf("%s\n",ipc);
	// printf("%llu\n",ipi);	
   

    for (i = 0; i < 50; i++) {
        if (ipc[i] == '.') {
            num++;
            if (num == 1) {
                strncpy(A1, ipc, i);
               sscanf(A1, "%d", &a1);
                 left = i + 1;
        //         printf("%s-%d\n", A1, a1);
                break;
            }
        }
    }


    for (i = left; i < 50; i++) {
        if (ipc[i] == '.') {
            num++;
            if (num == 2) {
                strncpy(A2, ipc + left, i - left);
                sscanf(A2, "%d", &a2);
                left = i + 1;
        //        printf("%s-%d\n", A2, a2);
                break;
            }
        }
    }

    for (i = left; i < 50; i++) {
        if (ipc[i] == '.') {
            num++;
            if (num == 3) {
                strncpy(A3, ipc + left, i - left);
                sscanf(A3, "%d", &a3);
                left = i + 1;
         //       printf("%s-%d\n", A3, a3);
                break;
            }
        }
    }

    for (i = left; i < 50; i++) {
        if (ipc[i] == '\0') {
          //  num++;
      //      if (num == 1) {
                strncpy(A4, ipc + left, i - left);
                sscanf(A4, "%d", &a4);
                left = i + 1;
         //       printf("%s-%d\n", A4, a4);
                break;
         //   }
        }
    }
     printf("%llu\n", a4+a3*256+a2*256*256+a1*256*256*256);

     
    
    b1=ipi/(256*256*256);
//	b2=(ipi/(256*256))/(256);
    b2=(ipi>>16)%256;;
	b3=(ipi%(256*256))/(256);
	//b4=0xff&(ipi>>24);
	 b4=ipi%256;    
    
    sprintf(ipcnew,"%d.%d.%d.%d",(unsigned int)(b1),(unsigned int)(b2),(unsigned int)(b3),(unsigned int)(b4));

printf("%s\n",ipcnew);
	//strcat(ipcnew,)

}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务