4-以IP地址形式输出

本文介绍了一个C语言程序,用于将32位二进制数转换为IP地址格式。程序通过读取输入的二进制字符串,然后按8位划分并转换为十进制数,最后组合成IP地址输出。核心功能由自定义的bin_dec函数实现,该函数递归地将二进制数转换为十进制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任意输入32位二进制数,编程实现将该二级制转换为IP地址形式。
例如:

输入:11111111111111111111111100000000
输出:255.255.255.0

这个例子是通过将输入的二进制数以8位数为一个单位分开,在通过自定义的函数将这8位二进制数转换成对应的十进制数。

#define  _CRT_SECURE_NO_WARNINGS  1
#include<stdio.h>
int bin_dec(int x, int n) 									/*自定义函数将二进制数转换成十进制数*/
{
	if (n == 0)
		/*递归结束条件*/
	{
		return 1;
	}
	return x * bin_dec(x, n - 1); 								/*递归调用bin_dec()函数*/
}
int 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[i] == '1')
		{
			ip[0] += bin_dec(2, 7 - i); 							/*计算0-7转换的结果*/
		}
	}
	for (i = 8; i < 16; i++)
	{
		if (a[i] == '1')
		{
			ip[1] += bin_dec(2, 15 - i); 						/*计算8-15转换的结果*/
		}
	}
	for (i = 16; i < 24; i++)
	{
		if (a[i] == '1')
		{
			ip[2] += bin_dec(2, 23 - i); 							/*计算16-23转换的结果*/
		}
	}
	for (i = 24; i < 32; i++)
	{
		if (a[i] == '1')
		{
			ip[3] += bin_dec(2, 31 - i); 							/*计算24-31转换的结果*/
		}
		if (a[i] == '\0')
		{
			break;
		}
	}
	printf("ip:\n");
	printf("%d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]);				/*将最终结果以ip形式输出*/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南山府嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值