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