c++ - 如何使用 C/C++ 可视化字节

标签 c++ c

我正在努力完成一些 C++ 培训。到目前为止一切顺利,但我需要一些帮助来加强我正在学习的一些概念。我的问题是如何可视化我创建的对象的字节模式。例如,我将如何打印出结构、长整型、整数等的字节模式?

我在脑海中理解它并且可以理解我的学习 Material 中的图表,我只是希望能够在我的一些学习程序中以编程方式显示字节模式。

我意识到这很微不足道,但任何答案都将极大地帮助我深入理解这些概念。

谢谢。

编辑:我主要将 XCode 用于我的其他开发项目,但也有用于 Windows7 和 fedora core 的虚拟机。在工作中,我使用 XP 和 visual studio 2005。 (我不能发表评论,因为我仍然是 n00b :D)

我使用了 unwind 的解决方案,这正是我正在寻找的。我也在想,也许我可以只使用 dos DEBUG 命令,因为我也想查看内存块。同样,这只是为了帮助我巩固我正在学习的内容。再次感谢大家!

最佳答案

您可以使用这样的函数来打印字节:

static void print_bytes(const void *object, size_t size)
{
#ifdef __cplusplus
  const unsigned char * const bytes = static_cast<const unsigned char *>(object);
#else // __cplusplus
  const unsigned char * const bytes = object;
#endif // __cplusplus

  size_t i;

  printf("[ ");
  for(i = 0; i < size; i++)
  {
    printf("%02x ", bytes[i]);
  }
  printf("]\n");
}

用法看起来像这样,例如:

int x = 37;
float y = 3.14;

print_bytes(&x, sizeof x);
print_bytes(&y, sizeof y);

这将字节显示为原始数值,采用十六进制,通常用于此类“内存转储”。

在运行“Intel(R) Xeon(R)”CPU 的随机(甚至可能是虚拟的)Linux 机器上,打印:

[ 25 00 00 00 ]
[ c3 f5 48 40 ]

这也很容易证明 Intel 系列 CPU:s 确实是 little endian .

关于c++ - 如何使用 C/C++ 可视化字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/920511/

相关文章:

python - 在更新期间像演示文稿一样显示图像而不显示桌面

c++ - OpenGL 延迟渲染不工作

c - 理解 C 语言中的 StrBuff

c - 在 C 中第二次调用同一打印函数时出现错误

c++ - 如何将字符串插入到sql查询中?

c++ - 使用 getchar() 获取字符并将它们保存到文件中,每次换行 C++

c++ - 最新可能的文件时间

c++ - MPI_Comm_split 解释

c - 嵌入式 C : manager for global variables

c - 文件大小总是在变化,使用 C 和 fopen_s 函数