题解 | #整数与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,) }