一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。
输入在一行中给出32位二进制字符串。
在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。
输入样例:
11001100100101000001010101110010
输出样例:
204.148.21.114
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
首先,我们要知道ip地址是从0到255的
#include
int main() {
static char bin[33], res[16];
scanf("%s", &bin);
char *p = bin, *q = res;
int sum = 0;
int digit = 0;
for(int j = 1; j <= 4; j++) {
for(int i = 1; i <= 8; i++, p++) {
if(*p == '0') {
sum *= 2;
} else if(*p == '1') {
sum = sum * 2 + 1;
}
}
int flag = 0;
while (sum >= 0) {
digit = sum / 100;
sum %= 100;
if(digit != 0) {
*q = digit + '0';
q++;
flag = 1;
}
digit = sum / 10;
sum %= 10;
if(digit != 0 || flag == 1) {
*q = digit + '0';
q++;
}
digit = sum;
*q = digit + '0';
q++;
sum = -1;
}
sum = 0;
flag = 0;
if(j < 4) {
*q = '.';
q++;
}
}
printf("%s", res);
}