#include
int bin_dec(int x, int n)
/*自定义函数将二进制数转换成十进制数*/
{
if (n == 0)
/*递归结束条件*/
{
return 1;
}
return x *bin_dec(x, n - 1);
/*递归调用bin_dec()函数*/
}
main()
{
int i;
int ip[4] ={0};
char a[33];
/*存放输入的二进制数*/
printf("please input binary number:\n");
scanf("%s", a);
/*二进制数以字符串形式读入*/
for (i = 0; i < 8; i++)
{
if (a == '1')
{
ip[0] += bin_dec(2, 7-i);
/*计算0-7转换的结果*/
}
}
for (i = 8; i < 16; i++)
{
if (a == '1')
{
ip[1] += bin_dec(2, 15-i);
/*计算8-15转换的结果*/
}
}
for (i = 16; i < 24; i++)
{
if (a == '1')
{
ip[2] += bin_dec(2, 23-i);
/*计算16-23转换的结果*/
}
}
for (i = 24; i < 32; i++)
{
if (a == '1')
{
ip[3] += bin_dec(2, 31-i);
/*计算24-31转换的结果*/
}
if (a == '\0')
{
break;
}
}
printf("ip:\n");
printf("%d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]);
/*将最终结果以ip形式输出*/
}
中间int bin_dec(int x, int n)
{
if (n == 0)
/*递归结束条件*/
{
return 1;
}
return x *bin_dec(x, n - 1);
/*递归调用bin_dec()函数*/
}和for (i = 0; i < 8; i++)
{
if (a == '1')
{
ip[0] += bin_dec(2, 7-i);
/*计算0-7转换的结果*/
}
}是怎样做的,我想知道详细的过程。
|