一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请定义一个函数,将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。输入样例:11001100100101000001010101110010(32位二进制字符串)输出样例:204.148.21.114(IP地址由4个十进制数组成,分别对应4个8位的二进制数,中间用“.”分隔开)
#include <stdio.h>
#include <math.h>
int b2t(char *s)
{
int sum=0;
for(int i=0;i<8;++i)
{
if(s[i]=='1')
sum+=pow(2,7-i);
}
return sum;
}
int main()
{
char ip_s[32];
gets(ip_s);
for(int i=0;i<4;++i)
{
printf("%d",b2t(ip_s+i*8));
if(i!=3)
printf(".");
}
return 0;
}
#include <stdio.h>
int fac(int n) {
sum = 1;
for (int i = 0; i < n; i++) {
sum *= 2;
}
return sum;
}
int main() {
char ip[100];
scanf("%s", ip);
for (int i = 0; i < 4; i++) {
int num = 0;
for (int j = 0; j < 8; j++) {
num += fac(ip[i * 8 + j]);
}
printf("%d", num);
if (i != 3) {
printf(".");
}
}
}