首页 > 解决方案 > 在 C++ 中,如何正确地将 BYTE 类型存储在变量中?

问题描述

如果这很明显或已在其他地方得到回答,请提前道歉。我已经搜索了几个小时,但由于我对 C++ 的缺乏经验,我很可能缺乏适当的词汇来形成适当的搜索词。

我遇到的问题出现在使用代码示例的上下文中,该示例列出了特定运行进程使用的所有模块。

我正在努力寻找一种将以下代码行产生的输出存储在变量中的方法:

    _tprintf( TEXT("\n     base address   = 0x%08X"), (DWORD) me32.modBaseAddr );

此处的 Microsoft 文档中,“me32.modBaseAddr”看起来是指向 BYTE 类型变量的指针。上面的代码非常漂亮地将 me32.modBaseAddr 中保存的正确十六进制地址打印到控制台中。

我想要做的是将 me32.modBaseAddr 存储到一个变量中,然后可以将其传递给 std::ofstream (我想将它写入一个文件)。

我确信我无法理解一些基本的东西,所以即使有人甚至可以为我指出正确的方向,我需要学习的内容也会非常有用。

谢谢!!

标签: c++winapi

解决方案


modBaseAddr成员基本上是指向元素数组的第一个元素的指针modBaseSize。每个元素都是一个BYTE

因此,要将所有原始二进制数据写入流(以二进制模式打开),您可以执行例如

my_stream.write(reinterpret_cast<char*>(me32.modBaseAddr), me32.modBaseSize);

推荐阅读