以IP地址形式输出

Posted 卷王之王1.0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以IP地址形式输出相关的知识,希望对你有一定的参考价值。

        任意输入一个32位的二进制数,将二进制转换成IP地址形式输出

原理:将输入的二进制以每8位数为一个单位分开,将这8位二进制数转换成十进制数

#include<stdio.h>
int bin_dec(int x, int n);  //递归声明
int main()

	char a[33];              //结束标志'\\0'占一个位置故设为33
	int ip[4] =  0 ;       //初始为0
	scanf("%s", a);
	for (int i = 0; i < 8; i++)
	
		if (a[i] =='1')		 //注意是字符1而不是整数1
			ip[0]+=bin_dec(2, 7 - i);
	
	for (int j = 8; j < 16;j++)
	
		if (a[j] == '1')
			ip[1] += bin_dec(2, 15 -j);
	
	for (int k = 16; k < 24; k++)
	
		if (a[k] == '1')
			ip[2] += bin_dec(2, 23 - k);
	
	for (int m = 24; m < 32; m++)
	
		if (a[m] == '1')
			ip[3] += bin_dec(2, 31 - m);
	
	printf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
	return 0;

int bin_dec(int x, int n)

	if (n == 0)
		return 1;
	else
		return x * bin_dec(x, n - 1);

测试结果:

 

以上是关于以IP地址形式输出的主要内容,如果未能解决你的问题,请参考以下文章

以IP地址的形式访问网站

华科机考:IP地址

C++ IP 地址人类可读的形式

IP地址与子网掩码

怎样将一个ip地址写成一个32位无符号整数形式

写出专用IP地址的定义(采用两种方法表示,子网掩码的形式和CIDR前缀的形式)