C语言实现16进制到2进制的转换
今天帮同学看代码,她想实现把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进制的转换相关推荐
- c语言ffffff错误,C语言打印16进制出现0xffffff现象的问题剖析!
C语言打印16进制出现0xffffff现象的问题剖析! 其实类似的问题不是只在网络程序中才会出现的,看示例代码: 复制代码 1 #include 2 int main() 3 { 4 char ...
- c语言输出16进制数转字符,(转)C语言16进制输出字符型变量问题
最近在做一个C的嵌入式项目,发现在C语言中用printf()函数打印字符型变量时,如果想采用"%x"的格式将字符型变量值以十六进制形式打印出来,会出现一个小问题,如下: char ...
- C语言 10进制 以8进制和16进制显示, #处理显示前导符
C语言 10进制 以8进制和16进制显示, #处理显示前导符 #include<stdio.h> void main() {int a=20,b=30;int c=a+b;printf(& ...
- 16进制转2进制的代码C语言
16进制转2进制的代码C语言 #include <stdio.h> void main( void ) { unsigned int i, j, num, Num[20]; char St ...
- C语言将16进制数转为10进制数
程序分析: 在16进制转为10进制时会遇到很多情况: 1. 开头是空格.符号等之后才是 0x 或 0X: 对于第一种情况,我们要先判断是字符,把空格这些去了,从字符开始:对于有'+'或'-' 的我们就 ...
- c语言中字符串转16进制或10进制
直接上语句: str = "16" 1,字符串转16进制 int a = strtol(str,NULL,16); 2,字符串转10进制 int b = strtol(str,NU ...
- 2进制 , 8进制 , 10进制 , 16进制 , 介绍 及 相互转换 及 快速转换
为什么要使用进制数 数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010- 的数字 ; 我们操作计算机 , 实际 就是 使用 程序 和 软件 ...
- linux c int16进制转10进制,[编程题] 进制转换(16进制转10进制)
[编程题] 进制转换 3/3 [编程题] 进制转换 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. ...
- python 16进制转10进制, 8进制转10进制, 2进制转10进制的方法
python 16进制转10 进制, 8进制转10进制, 2进制转10进制 可以使用系统自带的 int 方法 具体如下: value = "0x1388" result = int ...
- 10进制转16进制,16进制转10进制,随机出一个6位十六进制颜色值
方案一: var num16 = "ffffff";var num10 = parseInt(num16,16);//16进制转10进制console.log(num10) // ...
最新文章
- 【Pandas库】(5) 索引操作--增、删
- 智能车竞赛技术报告 | 智能车视觉 - 首都师范大学 - 首师智能视觉
- php error log 函数,php日志函数error_log如何使用 php日志函数error_log用法介绍
- poly-YOLOv3
- leetcode算法题--从先序遍历还原二叉树
- 数据库的七种传播方式
- 关于mysql报 loopWaitCount 0, wait millis 60000 错误的解决办法
- 尝试自动重定向的次数太多_GoRod:基于DP协议的Web自动化和数据抓取工具
- lvs主从服务器转发风暴(广播风暴、大流量)
- 前端学习(1814):前端调试之css flex
- c语言线程不安全错误定位,C语言中的线程安全可破坏事件触发类#
- object-c中NSString与int和float的相互转换
- slf4j没有在linux中生成日志,logback+SLF4J 没打印日志
- java 算法 数组_常见算法总结 - 数组篇
- c#中的ref、out、params参数
- PHP的新手语法介绍
- 前端工程师最常用的字体图标库
- vc运行库各版本下载
- Latex tabular 表格
- 安装了Adobe Acrobat却没有pdf虚拟打印机