首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从包含指针的结构中用十六进制打印原始数据

从包含指针的结构中用十六进制打印原始数据
EN

Stack Overflow用户
提问于 2018-05-10 02:33:37
回答 1查看 623关注 0票数 1

作为从struct:Printf raw data to a fixed length hex output打印原始十六进制数据问题的一个特殊延续。

我有一个包含指向其他数据的指针的结构。有什么简单的方法可以将这个结构和指针的内容作为一个连续流中的原始十六进制值打印出来吗?当使用以下方法打印B的十六进制值时:

代码语言:javascript
复制
// @note not actually valid code
struct B myStruct;
struct A myOtherStruct;
myStruct.c = &myOtherStruct;
unsigned char * p = (unsigned char *)myStruct;

for(int i = 0; i < sizeof(struct B) + sizeof(struct A); i++) // 
  printf("%02x ", p[i]);

我很自然地只能在myStruct.c上得到一个地址(因为这就是我想的)。

代码语言:javascript
复制
struct A
{
  int a;
  char b;
};
struct B
{
  int a;
  char b;
  void * c; // usually a struct A, ignore type-safety for simplicity 
};

我尝试用struct B手动为malloc中的数据腾出空间,并复制struct A,但似乎没有做到这一点。主要是出于好奇。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-10 02:53:59

当您在struct B上循环并打印void * c时,您将打印指针的值(即内存地址)。

因此,要么将struct A直接嵌入到struct B (而不是指针)中;要么编写打印代码,以便它知道指针、取消引用并打印这些指针(您需要知道内存有多大--既然您说的是// usually a struct A,那么让我们假设程序知道;否则,您需要保留存在的内容;或者至少要保持它的大小)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50264646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档