将 4 个字节的向量转换为 int c++

convert vector of 4 bytes into int c++

我的函数read_address总是return一个4字节的向量

对于其他用例,它是一个向量而不是常量数组

在这个用例中我总是return 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”的值总是变化为随机数 你能解释一下我的错误吗

您的代码将指针值(随机地址)转换为整数,而不是引用它所指向的内容。轻松修复。

而不是这个:

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

这个:

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

语言律师可能不同意以上内容。而且因为在某些平台上复制未对齐边界上的数据可能会出现问题。因此,将内容中的 4 个字节复制到 32 位整数的地址中可能就足够了:

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