内存数据的十六进制Print
2011-04-20 09:22 zhenjing 阅读(4267) 评论(0) 编辑 收藏 举报在程序的调试过程中,经常需要输出各种数据,正常情况下使用 printf 和 cout 即可实现数据输出。然而在输出二进制数据时, printf 和 out 却有点无能为力。那么如何比较二进制数据是否正确呢?
方案一:文件输出。文件可以输入任何数据,但是需要在程序之外比较文件,这对于少量数据并不划算。
方案二:实现自定义的十六进制输出函数。当然,也可是八进制,一般而言十六进制更易看懂 ( 习惯 ) 。下面给出一个最近实现的此类函数。该函数可将指定长度任何内存数据以十六进制格式输出。 这个程序对 32 和 64 位的 PC 均适用。
注意: %x 无法正确打印负数,负数总是打印成 32bit 整型数, 64 位 PC 也是如此。
程序输出为:
The Hex output of data : //char c = 'A'
0x41
The Hex output of data : // char c=’a’
0x61
ffffffff
The Hex output of data : // char c =255
0xff
The Hex output of data : // char c = -1
0xff
ffffffff
The Hex output of data : // short sc = -8;
0xf8ff
fffffff8
The Hex output of data :
0x0000000000000000000000000000000000000000
The Hex output of data : // std::string str = "BRSACP";
0x425253414350
The Hex output of data : // buf[0] = 0xFD; buf[1] = 0xFE;
0xfdfe
The Hex output of data :
0xfdfe425253414350000000000000000000000000
The Hex output of data :
0x504341535242fefd
作者:zhenjing.chen
出处:http://www.cnblogs.com/zhenjing/
未注明转载的文章,版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步