C语言将ip地址的二进制形式转化为十进制的形式0
1515rhbz2017.12.26浏览15次分享举报
题目的意思是输入一个32位的二进制的数,每8位转化为一个十进制的书,将其转化为十进制的ip地址。然后我写的代码是这样的#includeintmain(){intn,i,j,k;interdn[8]={128,64,... 题目的意思是输入一个32位的二进制的数,每8位转化为一个十进制的书,将其转化为十进制的ip地址。
然后我写的代码是这样的
#include
int main()
{
int n,i,j,k;
int erdn[8]={128,64,32,16,8,4,2,1};//二进制每一位的权重
char ip[4][8];//储存ip地址的二进制形式
scanf("%d",&n);
while(n--)
{
int sum[4]={0};//清空上一组的数据
scanf("%s",ip);//输入数据
for(j=0;j<4;j++)
{
for(k=0;k<8;k++)
{
ip[j][k]-='0';//求出每一位的值,原来是字符型
sum[j]+=(ip[j][k]*erdn[k]);//每一位加上自己的权重
}
//if(ip[j][0]) sum[j]+=128;
}
printf("%d.%d.%d.%d\n",sum[0],sum[1],sum[2],sum[3]);
}
return 0;
}
问题是,将这32位的数分成四组之后,每组的第一个数并没有乘以128加到sum这个数组中去
比如我输入1000000100000010000001000000(一个1带七个0x4)输出就是0.0.0.0(四个0)
请问一下各位大神这究竟是哪里错了 展开