是我使用的代碼...鑄造UINT8 UINT32到
int b = 0;
u8 dt[4] = {0};
while (there_is_buffer(rbuf)) {
dt[b] = (u8)(popFront(rbuf));
if (b > 2) {
uint32_t _Recv = (uint32_t)dt;
/* xil_printf("data: %x%x%x%x\n\r",dt[3], dt[2], dt[1], dt[0]); */
xil_printf("data: %x\n\r", _Recv);
b = 0;
}
else
b++;
}
被註釋掉工作正常printf語句,但其他一個沒有。我在這裏做錯了什麼?我如何將u8
數組轉換爲uint32?
的'*((uint32_t的*)DT)'是尾數獨立不像'dt的[3] << 24 | dt [2] << 16 ...'方法(正如你所提到的)。但第一個是受到對齊訪問問題的影響。第二個依賴於sizeof(int)> = 4。 – chux