首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C中将结构转换为字符数组?

如何在C中将结构转换为字符数组?
EN

Stack Overflow用户
提问于 2018-05-28 01:51:59
回答 2查看 0关注 0票数 0

我试图将一个结构转换为一个字符数组通过网络发送。但是,当我这样做时,我从char数组中得到了一些奇怪的输出。

代码语言:javascript
复制
#include <stdio.h>

struct x
{
   int x;
} __attribute__((packed));


int main()
{
   struct x a;
   a.x=127;
   char *b = (char *)&a;
   int i;
   for (i=0; i<4; i++)
      printf("%02x ", b[i]);
   printf("\n");
   for (i=0; i<4; i++)
      printf("%d ", b[i]);
   printf("\n");
   return 0;
}

这里是ax的各种值的输出(在使用gcc的X86上): 127: 7f 00 00 00 127 0 0 0

128: ffffff80 00 00 00 -128 0 0 0

255: ffffffff 00 00 00 -1 0 0 0

256: 00 01 00 00 0 1 0 0

我理解127和256的值,但为什么数字在128时会改变?为什么它不会是:80 00 00 00 128 0 0 0

EN

回答 2

Stack Overflow用户

发布于 2018-05-28 09:52:39

代码语言:javascript
复制
printf("%02hhx", b[i]);
票数 0
EN

Stack Overflow用户

发布于 2018-05-28 11:02:20

代码语言:javascript
复制
for (i=0; i<4; i++)
   printf("%02x ", (unsigned char)b[i]);

或者,可以unsigned char*从一开始就使用:

代码语言:javascript
复制
unsigned char *b = (unsigned char *)&a;

然后,当使用printf打印时,不需要任何投射。

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

https://stackoverflow.com/questions/-100000093

复制
相关文章

相似问题

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