将 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);
我的函数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);