我的函数 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;
Run Code Online (Sandbox Code Playgroud)
它总是相同的值
但是“res”的值总是变成随机数你能解释一下我的错误吗
您的代码将指针值(随机地址)转换为整数,而不是引用它指向的内容。轻松修复。
而不是这个:
uint32_t res = reinterpret_cast<uint32_t>(content.data());
Run Code Online (Sandbox Code Playgroud)
这:
uint32_t* ptr = reinterpret_cast<uint32_t*>(content.data());
uint32_t res = *ptr;
Run Code Online (Sandbox Code Playgroud)
语言律师可能会对上述内容提出异议。因为在某些平台上在未对齐的边界上复制数据可能会出现问题。因此,将 4 个字节从内容中复制到 32 位整数的地址中就足够了:
memcpy(&res, content.data(), 4);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |