c++ - 指向存储在字符串 c++ 中的十六进制
问题描述
我有这个代码(不是真的,但它描绘了图片)
uint32_t funcA(...)
{
uint32_t len = -1;
funcB((uint64_t)&len);
return len;
}
void funcB(uint64_t arg0)
{
std::stringstream ss;
ss << std::hex << arg0;
std::string res(ss.str());
std::string address = "0x00";
address.append(res);
// Now i got the exact memory address of len
// Where do i go from here?
}
函数的 in-values 不能改变,但不知何故我需要弄清楚如何操纵传入的 len 的值。如果我在字符串中有内存地址,是否可以指向该地址?如果有怎么办?如果不是那么我将如何解决这个问题?
解决方案
您无需绕过字符串,附加0x00
到数字并不会神奇地将其变成地址。
len
(converted to )的地址uint64_t
是正在传递的参数,因此将其转换回指针:
auto len_address = reinterpret_cast<uint32_t*>(arg0);
然后你可以
*len_address = 5678;