我正在努力完成一些 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/