非printf形式的十六进制和二进制打印(雅虎面试题)
编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列
1 template <typename T>2 void displayHexBin(const T& v)3 {4 const unsigned char c2h[] = "0123456789ABCDEF";5 const unsigned char c2b[] = "01";6 7 unsigned char* p = (unsigned char*)&v;8 char* buf = new char [sizeof(T)*2+1];9 char* ptmp = buf; 10 p = p + sizeof(T)-1; 11 for (int i = 0; i < sizeof(T); i++, --p) { 12 *buf++ = c2h[*p >> 4]; 13 *buf++ = c2h[*p & 0x0F]; 14 } 15 *buf = '\0'; 16 printf("hex format displayed as %s\n", ptmp); 17 18 delete [] ptmp; 19 p = (unsigned char*)&v; p = p + sizeof(T)-1; 20 ptmp = buf = new char [sizeof(T)*8+1]; 21 for (int i = 0; i < sizeof(T); i++, --p) { 22 for (int j = 0; j < 8; j++) 23 *buf++ = c2b[(*p >> (7-j)) & 0x1]; 24 } 25 *buf = '\0'; 26 printf("bin format displayed as %s\n", ptmp); 27 delete [] ptmp; 28 } 29
转载于:https://www.cnblogs.com/zerolee/archive/2012/06/17/2552500.html
非printf形式的十六进制和二进制打印(雅虎面试题)相关推荐
- 排序算法:快速排序算法实现及分析(递归形式和非递归形式)
快速排序算法介绍 从名字上就可以看出快速排序算法很嚣张,直接以快速命名.确实快速排序 的确很快速,被列为20世纪十大算法之一.程序员难道不应该掌握么.快速排序(Quick Sort)的基本思想是:通过 ...
- c语言位运算八进制转二进制,C语言十进制转换二进制八,十六进制。二进制转十进制。...
C语言十进制转换二进制八,十六进制. 十进制转二进制有个计算公式,就是除以2取余再倒序显示余数就是了.可以根据公式写.八制进公式也同理.十六进制有点不一样,大于9的要转为字母.A,B,C,D,E,F. ...
- 进制转换(C++):十六进制、二进制、十进制(附源代码)
思路如下: 十进制转二进制:除二求余,得到低位到高位的二进制数字排列 十进制转八进制:除八求余,得到低位到高位的八进制数字排列. 十进制转十六进制:除十六取余,得到低位到高位的十六进制数字排列,对于 ...
- 第四章第十二题(十六进制转二进制)(Hex to binary)
4.12(十六进制转二进制)编写一个程序,提示用户输入一个十六进制数,显示其对应的二进制数.对于不正确的输入数字,提示非法输入. 下面是一个运行示例: Enter a hex digit: B The ...
- poj 3323 Matrix Power Series (矩阵乘法 非递归形式)
为了搞自动机+矩阵的题目,特来学习矩阵快速幂..........非递归形式的求Sum(A+A^2+...+A^k)不是很懂,继续弄懂................不过代码简洁明了很多,亮神很给力 # ...
- 二叉树遍历(先序,中序,后序,层序)递归和非递归形式
文章目录 1.先序遍历 定义 递归 非递归(栈) 2.中序遍历 定义 递归 非递归(栈) 3.后序遍历 定义 递归 非递归(栈) 4.层序遍历 定义: 代码实现(队列) 二叉树的遍历是通过一定顺序来访 ...
- Matlab中十六进制和二进制值数转换
目录 使用十六进制和二进制表示法表示整数 将十六进制和二进制值表示为文本 将十六进制值构成的数组表示为文本 将二进制表示转换为十六进制表示 使用二进制值的按位运算 可以将数字表示为十六进制或二进制值. ...
- 汇编语言 十六进制转换为二进制
今天写了十六进制转换为二进制的汇编语言小程序,感觉挺有逻辑性的,运用条件分支,进行转换,这里把自己的心得分享一下,希望对大家有点小小的启示 由于,代码中已经有了详细注释,在这里我只是说出我写该程序的思 ...
- 16进制ff转化为二进制_3秒钟快速转换十六进制为二进制
这里介绍下如何快速将十六进制转换为二进制: 举例,ipv6地址:FE80::1 先将FE80拆分为FE和80,我们知道F是十进制的15,E为14,我们知道二进制的八位组,全为1时(1111 1111) ...
最新文章
- python制作一个教学网站_小白如何入门Python? 制作一个网站为例
- 服务降级和服务熔断的区别_Spring Cloud 熔断 隔离 服务降级
- 八.linux系统文件属性知识
- PeekMessage
- 下载--保存(下载)文件到本地(.doc .jpg)
- c++ 写文件怎么让0x00不被识别成结束符_使用docker-copyedit工具删除镜像中不需要的环境变量和VOLUME...
- Numpy 数组的切片操作
- php 字符串操作函数
- 深信服智安全 SCSA---1
- 生信技能树课程记录笔记(二)20220523-20220524
- attention 文字识别算法_一文带你了解文字识别
- 实用常识 | 写论文时如何引用插入脚注 / 如何自定义脚注符号 / 如何将多个脚注合并在一起
- 2018怎样发英文外链才能提升谷歌排名
- android win7 共享网络打印机,详解win7共享打印机如何设置
- Elsevier论文模板没有author biography的解决办法
- ∘(空心的点乘)的数学含义
- 想搭建一个专属于你的网站吗??新手向超详细攻略
- hostiko模板-WHMCS自适应模板-略站网
- CentOS7 好日子到头了,如何优雅的抛弃 CentOS7?
- Win版4S降级工具odysseusOTA4教程百分之百成功