【发布时间】:2016-11-02 11:12:13
【问题描述】:
如何在表示二进制文件的字符串中找到整数?
例如,
const std::string pe_file_path(argv[1]);
std::ifstream pe_file(pe_file_path, std::ios_base::binary);
const std::string pe_file_content((std::istreambuf_iterator<char>(pe_file)), std::istreambuf_iterator<char>());
DWORD some_value = 0x243e0c10;
// pe_file_content.find(???);
我需要知道some_value在字符串中的位置。
我该怎么做?
现在我正在使用以下解决方案
std::ostringstream some_value_sstr;
some_value_sstr << std::hex << some_value;
std::ostringstream tmp;
for (std::size_t i = 0; i < 4; ++i)
{
tmp << (char)std::stoi(some_value_sstr.str().substr(i * 2, 2), 0, 16);
}
std::cout << std::hex << pe_file_content.find(tmp.str()) << std::endl;
但我想这个问题可以有更优雅的解决方案。
【问题讨论】:
-
你的意思是像this?小心字节序。我也不知道
std::string是否是二进制数据的最佳选择... -
@Simon Kraemer 好吧,是的。但我已经有一个
DWORD变量 -
您搜索的总是
DWORD?
标签: c++