IP转换
问题描述
将十进制ip转换为二进制显示。
输入
输入包含多组测试数据,每一组为一行,一行包含一个十进制IP
输出
对每组数据输出相应的二进制IP
样例输入
128.1.2.128
192.168.2.10
样例输出
10000000.00000001.00000010.10000000
11000000.10101000.00000010.00001010
#include <cstdio>
#include <cstring>
int main() {
int ip[4];
int d[8];
while(scanf("%d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]) ==4) {
for(int i=0; i<4; i++) { // 处理p[i]
// 方法一:按位与
// for(int j=7; j>=0; j--) {
// if(ip[i] & (1<<j)) { // 判断ip[i]的第j位是0还是1
// printf("1");
// } else {
// printf("0");
// }
// }
// 方法二:短除法
int j = 0;
memset(d, 0, sizeof(d)); // 初始化d数组
while(ip[i]>0) { // ip[i]不为0是一直对其除2取余
d[j++] = ip[i] % 2;
ip[i] /= 2;
}
for(int j=7; j>=0; j--) { // 从高到低打印
printf("%d", d[j]);
}
if(i!=3) printf(".");
}
printf("\n");
}
return 0;
}