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);
(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]);
}
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]);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯