案例:任意输入32位的二进制数,编程实现将该二进制数转换成IP地址形式。
输入:11111111 11111111 11111111 00000000(为了观看清晰,中间并不含空格)
输出:255.255.255.0
#include<iostream>
using namespace std;
#include<cmath> //pow函数头文件
void Twonum_IP(char* a, int* IP) //将二进制数转换成IP地址转换函数
{
int sum = 0;
int x = 0;
for (int i = 0,j=0; i < 32; i++,j++)
{
if (a[i] == '1')
{
sum += (int)pow(2, 7 - j); //pow(x,y)函数的返回值为:x的y次方
}
if (j % 8 == 7) //每8位为一个IP地址位
{
j = -1; //使返回循环前面j依然为0
IP[x++] = sum; //x++换读取下个IP地址
sum = 0;
}
}
}
int main()
{
char a[33] = { 0 }; //用于存放32二进制数
int IP[4]; //二进制转换的IP地址存放在该数组中
int i;
cout << "请输入一个二进制数:" << endl;
cin >> a;
Twonum_IP(a, IP);
for (i = 0; i < 3; i++)
{
cout << IP[i] << ".";
}
cout << IP[i] << endl;
system("pause");
return 0;
}
运行结果: