将 BYTE* 从MODULEENTRY32的 modBaseAddr 转换为 std::string

Converting BYTE* from MODULEENTRY32's modBaseAddr to a std::string

本文关键字:转换 std modBaseAddr string BYTE MODULEENTRY32      更新时间:2023-10-16

我已经从Winapi中填充了包括modBaseAddrMODULEENTRY32结构。我需要在保持其格式的同时将其转换为std::string。我尝试将BYTE *modBaseAddr内容复制到char缓冲区,然后从中制作std::string。这产生了一些神秘的字符,而其他时候则违反了MEM访问:0xC0000005: Access violation reading location 0x001013C0.。我了解为什么会发生这种情况,经过进一步的研究,我对任何解决方案感到困惑。

谢谢,

编辑:为了澄清我的意图,我仅以存储地址来记录它

您可以使用std::ostringstream。除了char*以外,将传递给operator<<的任何指针都将打印出其在其时保留的地址。char*将其作为零终止字符串的特殊处理。由于BYTE*确实是char*,因此您只需要打印其地址即可:

std::ostringstream o;
o << (void*) modBaseAddr;
std::string str = o.str();