我想將uint8_t陣列復制到uint8_t指標
uint8_t temp_uint8_array[] = {0x15, 0x25, 0x32, 0x00, 0x52, 0xFD};
uint8_t* Buffer = temp_uint8_array;
現在 :
Buffer = {0x15, 0x25, 0x32};
所以我知道我的資料是因為 0x00 被截斷了,有什么解決辦法嗎?
由于我可以訪問要復制的資料的大小,因此我嘗試使用
memcpy(Buffer, &temp_uint8_array, local_length);
但它不起作用
uj5u.com熱心網友回復:
uint8_t temp_uint8_array = 不是陣列而是語法錯誤。
所以我明白我的資料是因為 0x00
不,不是。如果您嘗試將資料解釋為字串,則 0x00 將被視為空終止符。但這不是字串。
有沒有解決辦法
不要將原始資料視為字串?memcpy將作業得很好。
但它不起作用
什么不起作用?你是local_length從哪里得到的?
uj5u.com熱心網友回復:
好吧,實際上是我的 IDE 中的變數查看器削減了我的變數值,因此我只能看到 0x00 之前的值,但在記憶體中資料已被復制。
也許它被解釋為字串,所以它顯示值直到空終止符。
要知道我必須使用除錯器檢查我的 mcu 記憶體中發生了什么。
uj5u.com熱心網友回復:
memcpy 不正確:
memcpy(Buffer, &temp_uint8_array, …
由于 temp_uint8_array 是一個陣列,那么你不應該用 & 前綴:
memcpy(Buffer, temp_uint8_array,…
緩沖區指向 temp_iint8_array,因此 memcpy 除了擦除同一記憶體位置中的位元組外什么也不做。您的 IDE 可能認為 uint8 陣列可以作為字符字串處理并顯示內容直到 0x00。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314414.html
下一篇:條件JSON決議和附加
