您的位置:制图网首页 -> 新闻动态 -> c语言中格式输出二进制的两种办法【十进制转成二进制的常用方法】

热门排行

c语言中格式输出二进制的两种办法【十进制转成二进制的常用方法】

2023/1/31 来自于:制图网 点击:34
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) { 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.结果展示

(有图有真相咯~)

c语言中格式输出二进制的两种办法【十进制转成二进制的常用方法】

放在最后,喜欢作者的欢迎关注我们的公众号"脑补空间”,会为大家推送更多推文~

制图网(www.makepic.net),专业的logo免费设计在线生成网站,全自动智能化logo设计,商标设计,logo在线生成!

欢迎使用制图网制作属于您公司自己的logo,不仅专业而且经济实惠,全方位满足您公司品牌化、视觉化的需求。

输入激活码

只需简单一步,使用微信扫码(或长按识别二维码)并在任一小程序首页根据提示获取激活码! chatGPT中文网页版,无需注册,快来体验全网最火爆的人工智能应用!
刻字印章刻章子定刻光敏盖章印订制(淘宝商家)

输入激活码

只需简单一步,使用微信扫码(或长按识别二维码)并在任一小程序首页根据提示获取激活码! chatGPT中文网页版,无需注册,快来体验全网最火爆的人工智能应用!
刻字印章刻章子定刻光敏盖章印订制(淘宝商家)
请使用手机淘宝进行扫码