题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
#include <ctype.h> #include <stdio.h> int _isdigit(char c){ if(c>=48&&c<=57){ return 1; } else{ return 0; } } int main() { char str1[100]; scanf("%s",str1); int ip_d = 0; scanf("%d",&ip_d); //ip --> num { int i=0; long int value_d =0; long int value_b =0; int left_move_index = 24; while(str1[i]!='\0'){ if(_isdigit(str1[i])==1){ value_d =value_d*10+str1[i]-48; } if(str1[i] == '.'){ value_b += (value_d<<left_move_index); left_move_index -=8; value_d = 0; } i++; } printf("%ld\n",value_b+value_d); } //num --> ip { int d1,d2,d3,d4; d4 = ip_d - ((ip_d>>8)<<8); ip_d = ip_d>>8; d3 = ip_d - ((ip_d>>8)<<8); ip_d = ip_d>>8; d2 = ip_d - ((ip_d>>8)<<8); ip_d = ip_d>>8; d1 = ip_d - ((ip_d>>8)<<8); printf("%d.%d.%d.%d",d1,d2,d3,d4); } return 0; }