【发布时间】:2026-02-10 05:45:02
【问题描述】:
这是我的缓冲区,谁能解释我如何在其中存储一个十六进制值,当我尝试打印 buffer[0] 时,它打印的是 0 而不是 500。我正在尝试用ID 是 11 位,我知道 char 是 1 字节,即 8 位,它不能存储值。我还有其他元素要填充到缓冲区中,它们是 char 类型。所以我不能将缓冲区的类型从 char 更改为 int。我该如何解决我的问题。
char *buffer;
buffer = (char *)malloc(10*(sizeof(frameRd))); //frameRd is of 16bytes
buffer[0] = frameRd->id;
for(int i =1;i<15;i++)
{
buffer[i] = frameRd->data;
}
for(int i =0,i<16;i++)
{
printf("%4X",buffer[i]);
}
当我在控制台上打印此值时,frame->id = 0x500; 将buffer[0] 打印为 0,这肯定是因为
【问题讨论】:
-
请发布显示问题的Minimal, Complete, and Verifiable example,例如未显示
frameRd。将输入、预期输出和实际输出显示为问题中的文本。 -
0x500的最低有效字节是0,buffer是指向char的指针。 -
请停止修改问题并按要求发布 MCVE。