今天帮同学看代码,她想实现把16进制的数转换成2进制显示,百度了一下,代码是不少,但是都太长了,想起C和指针里面有似曾相识的东西,就自己写了一下,还是遇到了一些问题。

1. 没有注意到字符串存储的时候后面会自动加一个\0,因此想存放一个长度为n的字符串,需要开辟n + 1 个字节的空间,最后一个字节存放\0.
2. 循环过程中注意循环变量每次迭代过程中都要想终止条件靠近,避免死循环.
3.利用数组下标的控制来模拟栈

废话太多了,下面给出源码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>void
HextoTwo(int num)
{int res;int i = 0;char buf[BUFSIZ][5] = {"0000"};char reference[16][5] = {"0000","0001","0010","0011",\"0100","0101","0110","0111",\"1000","1001","1010","1011",\"1100","1101","1110","1111"};while(num / 16 !=  0){res = num % 16;strcpy(buf[i++], reference[res]);num = num / 16;}res = num % 16;strcpy(buf[i++], reference[res]);while(i > 0)printf("%s ", buf[--i]);
}int main()
{int num = 0xfa;HextoTwo(num);return EXIT_SUCCESS;
}

下面给出递归解法,话说天才用递归,然而本人很菜…….


void
HextoTwo(int num)
{int remainder;char buf[16][5] = {"0000","0001","0010","0011",\"0100","0101","0110","0111",\"1000","1001","1010","1011",\"1100","1101","1110","1111"};if(0 == num)return;remainder = num % 16;HextoTwo(num >> 4);printf("%s ", buf[remainder]);
}

就这么简单,还是要多写代码多思考,算法没有形成之前不要动手。

C语言实现16进制到2进制的转换相关推荐

  1. c语言ffffff错误,C语言打印16进制出现0xffffff现象的问题剖析!

    C语言打印16进制出现0xffffff现象的问题剖析! 其实类似的问题不是只在网络程序中才会出现的,看示例代码: 复制代码 1 #include 2 int main() 3 { 4     char ...

  2. c语言输出16进制数转字符,(转)C语言16进制输出字符型变量问题

    最近在做一个C的嵌入式项目,发现在C语言中用printf()函数打印字符型变量时,如果想采用"%x"的格式将字符型变量值以十六进制形式打印出来,会出现一个小问题,如下: char  ...

  3. C语言 10进制 以8进制和16进制显示, #处理显示前导符

    C语言 10进制 以8进制和16进制显示, #处理显示前导符 #include<stdio.h> void main() {int a=20,b=30;int c=a+b;printf(& ...

  4. 16进制转2进制的代码C语言

    16进制转2进制的代码C语言 #include <stdio.h> void main( void ) { unsigned int i, j, num, Num[20]; char St ...

  5. C语言将16进制数转为10进制数

    程序分析: 在16进制转为10进制时会遇到很多情况: 1. 开头是空格.符号等之后才是 0x 或 0X: 对于第一种情况,我们要先判断是字符,把空格这些去了,从字符开始:对于有'+'或'-' 的我们就 ...

  6. c语言中字符串转16进制或10进制

    直接上语句: str = "16" 1,字符串转16进制 int a = strtol(str,NULL,16); 2,字符串转10进制 int b = strtol(str,NU ...

  7. 2进制 , 8进制 , 10进制 , 16进制 , 介绍 及 相互转换 及 快速转换

    为什么要使用进制数 数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010- 的数字 ; 我们操作计算机 , 实际 就是 使用 程序 和 软件 ...

  8. linux c int16进制转10进制,[编程题] 进制转换(16进制转10进制)

    [编程题] 进制转换 3/3 [编程题] 进制转换 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. ...

  9. python 16进制转10进制, 8进制转10进制, 2进制转10进制的方法

    python 16进制转10 进制, 8进制转10进制, 2进制转10进制 可以使用系统自带的 int 方法 具体如下: value = "0x1388" result = int ...

  10. 10进制转16进制,16进制转10进制,随机出一个6位十六进制颜色值

    方案一: var num16 = "ffffff";var num10 = parseInt(num16,16);//16进制转10进制console.log(num10) // ...

最新文章

  1. 【Pandas库】(5) 索引操作--增、删
  2. 智能车竞赛技术报告 | 智能车视觉 - 首都师范大学 - 首师智能视觉
  3. php error log 函数,php日志函数error_log如何使用 php日志函数error_log用法介绍
  4. poly-YOLOv3
  5. leetcode算法题--从先序遍历还原二叉树
  6. 数据库的七种传播方式
  7. 关于mysql报 loopWaitCount 0, wait millis 60000 错误的解决办法
  8. 尝试自动重定向的次数太多_GoRod:基于DP协议的Web自动化和数据抓取工具
  9. lvs主从服务器转发风暴(广播风暴、大流量)
  10. 前端学习(1814):前端调试之css flex
  11. c语言线程不安全错误定位,C语言中的线程安全可破坏事件触发类#
  12. object-c中NSString与int和float的相互转换
  13. slf4j没有在linux中生成日志,logback+SLF4J 没打印日志
  14. java 算法 数组_常见算法总结 - 数组篇
  15. c#中的ref、out、params参数
  16. PHP的新手语法介绍
  17. 前端工程师最常用的字体图标库
  18. vc运行库各版本下载
  19. Latex tabular 表格
  20. 安装了Adobe Acrobat却没有pdf虚拟打印机

热门文章

  1. 一款简洁的税后工资计算器(2019)
  2. SyntaxError: invalid syntax解决方案
  3. 计算机去基金公司好,电子、通信、计算机 基金更看好哪个行业?
  4. 75%半导体产能集中在亚洲,让美国半导体霸主地位岌岌可危
  5. Scratch软件编程等级考试一级——20220918
  6. web展示萤石云视频
  7. html 毛笔书写效果,canvas 手写毛笔字效果
  8. 将Linux下文件目录使用Nginx代理使浏览器可访问
  9. 增长黑客手册——03
  10. Java Logging之JUL系列——Filter