C语言中格式输出二进制的两种方法
1.前言
在我们日常的编程中,有时候需要格式化输出一个整形数据的二进制,但是在我们C语言中只有
输出十进制:%d ;
输出十六进制:%x ;
输出单个字符:%c ;
输出字符串:%s ;
输出变量所在的地址:%p ;
而并没有这种二进制对应的格式,所以需要我们手动来实现。
2.源码实现
本篇博客给大家介绍两种方法:
1.通过库函数
itoa
,需要包含头文件:#include <stdlib.h>;
2.通过十进制转成二进制的常用方法——短除法;
为方便大家使用,将两种方法都封装成了函数,源码如下:
#include <stdio.h>
#include <stdlib.h>
#define uint32 unsigned int
#define uint8 unsigned char
void FuncOutputBin(uint32 value)
char string[33]; //形参类型uint32最大为32位,因此我这里定义了大小为33的字符串数组存放
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)