我有一个 int 声明并在 c 中分配了一个值。在内存中看起来如下
0x78 0x01 0x00 0x00 在地址 0x20002AD4
我需要从 int 的第一个和第二个字节中提取值。我已经使用以下代码成功提取了第一个字节(请参阅数据包 [2])
int dataSize = (lightCount * 3) + 1;
unsigned char packet[totalSize];
packet[0] = 0x7E;
packet[1] = 0x06;
packet[2] = (unsigned char)*(&dataSize); //dataSize LSB - THIS WORKS
packet[3] = (unsigned char)*(&dataSize + 1); //dataSize MSB - THIS DOES NOT
但是,当我尝试使用指针算法返回 int 中第二个字节的值时(请参阅 packet[3]),它反而会返回第 4 个字节。我相信这是因为整数大小为 4 个字节,因此地址上的 +1 会移动 4 个字节。
谁能建议我如何在第二个字节中返回值,即在上面的示例中我想返回 0x01