我是靠谱客的博主 痴情夕阳,最近开发中收集的这篇文章主要介绍以字节为单位显示变量的内存存储数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

               

地址: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

最后

以上就是痴情夕阳为你收集整理的以字节为单位显示变量的内存存储数据的全部内容,希望文章能够帮你解决以字节为单位显示变量的内存存储数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部