簡體   English   中英

將 4 個字節的向量轉換為 int c++

[英]convert vector of 4 bytes into int c++

我的 function read_address 總是返回一個 4 字節的向量

對於其他用例,它是一個向量而不是 const 數組

在這個用例中,我總是返回 4 個字節

std::vector<uint8_t> content;
 _client->read_address(start_addr, sizeof(int), content);
 uint32_t res = reinterpret_cast<uint32_t>(content.data());
 return res;

這是稱為內容的向量在此處輸入圖像描述

它總是相同的值

但是“res”的值總是變成隨機數 你能解釋一下我的錯誤嗎

您的代碼將指針值(隨機地址)轉換為 integer 而不是引用它指向的內容。 容易修復。

而不是這個:

uint32_t res = reinterpret_cast<uint32_t>(content.data());

這個:

uint32_t* ptr = reinterpret_cast<uint32_t*>(content.data());
uint32_t res = *ptr;

語言律師可能不同意上述規定。 而且因為在某些平台上復制未對齊邊界上的數據可能會出現問題。 因此,將內容中的 4 個字節復制到 32 位 integer 的地址中可能就足夠了:

memcpy(&res, content.data(), 4);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM