概述
地址:http://blog.csdn.net/morewindows/article/details/10021601
转载请标明出处,谢谢。
欢迎关注微博:http://weibo.com/MoreWindows
之前在《位操作基础篇之位操作全面总结》中写了一个变量内存存储查看函数——PrintfBinary,代码如下:
template <class T>void PrintfBinary(T a){ int i; for (i = sizeof(a) * 8 - 1; i >= 0; --i) { if ((a >> i) & 1) putchar('1'); else putchar('0'); if (i == 8) putchar(' '); } putchar('n');}
由于这个函数只能查看整型数据,对浮点数类型数据,结构体对象,类对象都不能查看。因此写了个功能强大点的,代码如下:
void PrintfBinaryOneByte(char cByte){ for (int i = 7; i >= 0; --i) { if ((cByte >> i) & 1) putchar('1'); else putchar('0'); }}// 从pStartAddress地址开始输出byteNum个字节void PrintfBinaryByte(unsigned char *pStartAddress, int byteNum){ // address for (int i = 0; i < byteNum; i++) { printf("0x%08x ", pStartAddress + i); } putchar('n'); // hexadecimal for (int i = 0; i < byteNum; i++) { unsigned char cByte = *(pStartAddress + i); printf(" %8x ", cByte); } putchar('n'); // decimal for (int i = 0; i < byteNum; i++) { unsigned char cByte = *(pStartAddress + i); printf(" "); PrintfBinaryOneByte(cByte); putchar(' '); } printf("nn");}// 以字节为单位显示变量的内存存储数据// By MoreWindows (http://blog.csdn.net/MoreWindows)template <class T>void PrintfBinaryEveryByte(T &a){ unsigned char* pstr = (unsigned char*)&a; int byteNum = sizeof(a); printf("首地址: 0x%08x 字节数: %dn", pstr, byteNum); while (byteNum > 0) { PrintfBinaryByte(pstr, byteNum > 4 ? 4 : byteNum); byteNum -= 4; pstr += 4; } printf("nn");}
测试一下:
#include <stdio.h>struct Node1{ int i; char c;};struct Node2{ char c; int i;};int main(){ printf(" 以字节为单位显示变量的内存存储数据 n"); printf(" - http://blog.csdn.net/morewindows/article/details/10021601 -n"); printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --nn"); int i = 0x12345678; PrintfBinaryEveryByte(i); short s = 0xfeed; PrintfBinaryEveryByte(s); Node1 n1; n1.i = 0x12345678; n1.c = 'a'; PrintfBinaryEveryByte(n1); Node2 n2; n2.i = 0x9abcdef0; n2.c = 'a'; PrintfBinaryEveryByte(n2); char c = '0'; PrintfBinaryEveryByte(c); double d = 1.0; PrintfBinaryEveryByte(d); return 0;}
程序运行结果如下:
地址:http://blog.csdn.net/morewindows/article/details/10021601转载请标明出处,谢谢。
欢迎关注微博:http://weibo.com/MoreWindows
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
最后
以上就是痴情夕阳为你收集整理的以字节为单位显示变量的内存存储数据的全部内容,希望文章能够帮你解决以字节为单位显示变量的内存存储数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复