非printf形式打印各种数据类型的十六进制和二进制
来源:互联网 发布:apache kylin教程 编辑:程序博客网 时间:2024/05/21 19:22
转载请标明是引用于 http://blog.csdn.net/chenyujing1234
欢迎大家提出意见,一起讨论!
一、源码实现
为了适配各种数据类型,且可以通过sizeof得到此类型的大小,所以这里采用模板形式开发。
以下是实现此功能的源码:
// 把十进制数(long型)分别以二进制和十六进制形式输出template <typename T>void displayHexBin(const T& v){const unsigned char c2h[] = "0123456789ABCDEF";const unsigned char c2b[] = "01";unsigned char* p = (unsigned char*)&v;char* buf = new char [sizeof(T)*2+1];// 转为16进制char* ptmp = buf;p = p + sizeof(T)-1;for (int i = 0; i < sizeof(T); i++, --p) {*buf++ = c2h[*p >> 4];*buf++ = c2h[*p & 0x0F];}*buf = '\0';printf("hex format displayed as %s\n", ptmp);delete [] ptmp;// 转为2进制p = (unsigned char*)&v; p = p + sizeof(T)-1;ptmp = buf = new char [sizeof(T)*8+1];for (int i = 0; i < sizeof(T); i++, --p){for (int j = 0; j < 8; j++)*buf++ = c2b[(*p >> (7-j)) & 0x1];}*buf = '\0';printf("bin format displayed as %s\n", ptmp);delete [] ptmp;}
二、框图解释
以上代码分为两部分,一个是转为16进制;一部分是转为2进制。
1、以Int为例求它的16进制数
2、以Int为例求它的2 进制数
三、 数据测试
1、Int 转16 进制与2进制
// 测试四.1 Int 转16 进制与2进制int dSourceOne = 2;int dSourceTwo = -2;displayHexBin(dSourceOne);displayHexBin(dSourceTwo);
结果:
2、float 转16进制与2 进制
// 测试四.2 double 转16 进制与2进制float fSourceOne = 3.0;float fSourceTwo = -2.0;displayHexBin(fSourceOne);displayHexBin(fSourceTwo);printf("\n");
float类型的二进制的存放方式请参考我的另一篇文章: 浮点型数据在内存中存储的表示[转载]
3、double 转16 进制与2进制
// 测试四.3 double 转16 进制与2进制double dSourceOne = 2.0;double dSourceTwo = -2.0;displayHexBin(dSourceOne);displayHexBin(dSourceTwo);
double 类型的二进制的存放方式请参考我的另一篇文章: 浮点型数据在内存中存储的表示[转载]
- 非printf形式打印各种数据类型的十六进制和二进制
- 非printf形式打印各种数据类型的十六进制和二进制
- 非printf形式打印各种数据类型的十六进制和二进制
- 不能使用printf,将十进制数以二进制数和十六进制的形式输出...
- 不是用它printf,将十进制数以二进制和十六进制的形式输出
- 不是用它printf,将十进制数以二进制和十六进制的形式输出
- 把十进制数(long型)分别为二进制和十六进制形式输出,不能使用printf
- 把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列。
- 把十进制数(long型)分别以二进制和十六进制形式输出,不使用printf系列库函数
- 雅虎面试题─把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列
- 雅虎面试题─把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列
- 把十进制数(long型)分别以二进制和十六进制形式输出,不使用printf系列库函数
- 把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数
- 雅虎面试题─把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列
- 134 编程实现:把十进制数(long 型)分别以二进制和十六进制形式输出,不能使用 printf系列
- printf打印十六进制
- printf打印二进制数据
- printf函数打印二进制
- 深入浅出之正则表达式
- oracle导入和导出工具impdp/expdp
- Verilog HDL 测量输入信号的正、负脉宽
- 编码20年的老程序员分享所积累的20条编程经验
- 正则表达式30分钟入门教程 版本:v2.3 (2008-4-13) 作者:deerchao
- 非printf形式打印各种数据类型的十六进制和二进制
- 以Webkit为核心的浏览器的CSS样式-----Mask
- 线程创建后,未必立即运行
- DM8168 EMAC/MDIO模块(5)
- 浅析Android下的Android.mk文件
- 如何理解数据结构中的引用参数(&)
- php中的json
- Activity栈(收藏)
- 趣题2:火柴游戏