问题描述:
任意数组32位的二进制数,转换成IP地址的形式输出。
输入样例:
11111111000000001111111100000001
输出样例:
255.0.255.1
参考代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int GetExponential(int a, int n)//求a的n次幂
{
if (n == 0)
return 1;
return a * GetExponential(a, n - 1);
}
int main()
{
int IpArray[4] = { 0 }, i;
char str[33] = { 0 };
scanf_s("%s", str, 33);
for (i = 0; i < 8; i++)
{
if (str[i] == '1')
IpArray[0] += GetExponential(2, 7 - i);
}
for (i = 8; i < 16; i++)
{
if (str[i] == '1')
IpArray[1] += GetExponential(2, 15 - i);
}
for (i = 16; i < 24; i++)
{
if (str[i] == '1')
IpArray[2] += GetExponential(2, 23 - i);
}
for (i = 24; i < 32; i++)
{
if (str[i] == '1')
IpArray[3] += GetExponential(2, 31 - i);
}
printf("%d.%d.%d.%d\n", IpArray[0], IpArray[1], IpArray[2], IpArray[3]);
return 0;
}
运行结果: