我现在正在失去理智,而我正在努力做到这一点。
char* buffer;
sprintf(buffer, "0x%08x", 5);
*(int *)(0x834AF2AC + 0x1a) = ?buffer?;
缓冲区= 0x05000000
我需要在内存中设置它,如果我只设置05它将设置0x00000005
问题要求更好。 如何将INT转换为“0x%08x”格式 所以5变成0x05000000
ANSWERD: 正确答案是*(int *)(0x834AF2AC + 0x1a)= 5<< 24;
答案 0 :(得分:2)
这样的事情:
#include <iostream> // for std::cout, std::endl
#include <string> // for std::string, std::stoi
int main()
{
std::string s{"0x05"};
int i = std::stoi(s, nullptr, 16); // convert base 16 number in s to int
std::cout << i << std::endl;
}
答案 1 :(得分:0)
我不确定我是否理解正确,但如果您想将整个string
转换为int
,那么我建议stringstream
。
http://www.cplusplus.com/reference/sstream/stringstream/stringstream/
对于十六进制字符串:
#include <string> // std::string
#include <iostream> // std::cout
#include <sstream> // std::stringstream
int main () {
std::stringstream ss;
ss << std::hex << 0x05;
int foo;
ss >> foo;
std::cout << "foo: " << foo << '\n';
return 0;
}
答案 2 :(得分:0)