C语言中格式输出二进制的两种方法-创新互联

1.前言

在我们日常的编程中,有时候需要格式化输出一个整形数据的二进制,但是在我们C语言中只有
输出十进制:%d;
输出十六进制:%x;
输出单个字符:%c;
输出字符串:%s;
输出变量所在的地址:%p;
而并没有这种二进制对应的格式,所以需要我们手动来实现。

10年积累的成都网站建设、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有洮北免费网站建设让你可以放心的选择与我们合作。2.源码实现

本篇博客给大家介绍两种方法:
1.通过库函数itoa,需要包含头文件:#include
2.通过十进制转成二进制的常用方法——短除法;
为方便大家使用,将两种方法都封装成了函数,源码如下:

#include#include#define uint32 unsigned int
#define uint8 unsigned char

void FuncOutputBin(uint32 value)
{char string[32]={0};   //形参类型uint32大为32位,因此我这里定义了大小为32的字符串数组存放
	itoa(value, string, 2);  
	printf("库函数得到的二进制为:%s\r\n",string);
}

//用短除法的思想得到二进制,之后将数据从后往前读取 
void ShortDivOutputBin(uint32 input)
{uint8 temp[33] = {0};  
	int i = 0;
	printf("短除法得到的二进制为:");
	while(input)
	{temp[i] = input % 2;	//取余数存放到数组中,此为得到的二进制数
		input = (uint32)input / 2;  //短除,while中判断是否除尽
		i++;  //存储了一个二进制数,自加存储下一个
	}
	for(i--; i>=0; i--)  //由于最后一次input为0无效,i还是自加了,因此最后一次自加的值是无用的,所以先自减,然后将余数从后往前读取
    {printf("%d",temp[i]);
	}
	printf("\r\n");
}

void main(void)
{uint32 input = 0;
	printf("请输入一个需要转化为2进制的整形数据:");
	scanf("%d", &input); 
	FuncOutputBin(input);
	ShortDivOutputBin(input);	
}

itoa函数原型:char *itoa( int value, char *string,int radix)
功能:将整形数据value转化成需要的进制radix,然后将之以字符串的形式存放在string中;
返回值:转化成对应进制后的字符串的地址,也可以不使用返回值;
它的三个参数依次为:
value:需要转化的整形数据;
string:转化成对应进制后的字符串的地址;
radix :需要转化的进制(我这里需要转化为2进制,所以填2);

3.结果展示

(有图有真相咯~)
在这里插入图片描述
放在最后,喜欢作者的欢迎关注我们的公众号"脑补空间”,会为大家推送更多推文~
在这里插入图片描述

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站标题:C语言中格式输出二进制的两种方法-创新互联
当前URL:http://ybzwz.com/article/ecpce.html