你好试图理解,为什么将字节数组复制到未对齐的字节结构中,我会丢失一些数据。也许有一种解决方法?
示例代码如下:
typedef struct { //Not aligned data
uint32_t val0;
uint8_t val1;
uint16_t val2;
uint32_t val3;
}TestSt_t;
TestSt_t testSt;
uint8_t testData[16] = {
0x11, 0x22, 0x33, 0x44,
0x55,
0x66, 0x77,
0x88, 0x99, 0xAA, 0xBB
};
int main() {
memcpy((uint8_t*)&testSt, (uint8_t*)&testData[0], sizeof(testSt));
}
编译器将添加padding的字节
typedef struct { //Not aligned data
uint32_t val0;
uint8_t val1;
uint8_t padding;
uint16_t val2;
uint32_t val3;
}TestSt_t;
所以0x66
在那个padding
字节中。