永发信息网

c语言编程

答案:4  悬赏:10  手机版
解决时间 2021-11-10 11:50
  • 提问者网友:愿为果
  • 2021-11-10 02:58
c语言编程
最佳答案
  • 五星知识达人网友:天凉才是好个秋
  • 2021-11-10 04:37

#include
#include
void main()
{
    char  ip[33]="";
    int i=31,j,k=3,sum[4]={0,0,0,0};
  puts("请输入完整二进制ip地址");
 gets(ip );
 puts("转化后为:");
     while(i>=0)
  {  
         j=0;
        while(j<8)
  {            
                sum[k]+=(ip[i]-48)*pow(2,j);    
                i--;              
                j++;
  }
                k--;
}
printf("%d:%d:%d:%d
",sum[0],sum[1],sum[2],sum[3]);
}


 

#include
#include
void main()
{
  //比如ip为:11111111 11111111 11111111 11111111  //按照8421法转化为16进制
int ip=0xffffffff; //
printf("%d.%d.%d.%d
",(ip >> 24)&0xff,(ip >> 16)&0xff,(ip>>8)&0xff,ip&0xff);
}

 

追问问一下,ip的数组里只有32个为什么设置成33,还有sum[k]+=(ip[]-48)×pow(2,j)是什么意思?追答因为这是字符窜,所以最后一个要留给 字符窜结束符号
后面一个是从字符窜后面取8个字符,把它转化为10进制的整数  比如 111 = 1+ 1*2^1+1*2^2
ip[i]-48是把‘0’‘1’转化为数值0 1  懂了?

全部回答
  • 1楼网友:渊鱼
  • 2021-11-10 07:43
不就是二进制转10进制吗
  • 2楼网友:青尢
  • 2021-11-10 06:38
printf ("%d.%d.%d.%d\n",
(ip >> 24) & 0xff,
(ip >> 16) & 0xff,
(ip >> 8) & 0xff,
ip & 0xff);
  • 3楼网友:野慌
  • 2021-11-10 05:37
#include
void main()
{
string Ip[32]="10001100011000110001";
int i=0,j,k=0,sum[4];
whille(Ip[i]!='\0')
{
j=0;
sum=0
while(j<4)
{
sum*=10;
sum[k]+=ip[i]-48;
i++;
j++
}
k++
}
printf("%d:%d:%d:%d",sum[0],sum[1],sum[2],sum[3]);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯