我研究了如何将 int 转换为 Hex 字符串并找到了一个 answer ,但是我需要的有点不同,您可以在以下代码中看到:
int addr = 5386; //
std::string buffer = "contains 0xCCCCCCCC as hex (non ASCII in the string)";
size_t idx = 0;
idx = buffer.find("\xCC\xCC\xCC\xCC", idx);
if (idx != string::npos) buffer.replace(idx, 4, XXX); // here i want to put the addr variable but as 0x0000150A
我需要的是一种将 addr
变量转换为十六进制字符串的方法,该字符串在 "\x0a\x15 之类的字节之间具有
\x
\x00\x00"
提前致谢。
最佳答案
也许这个程序可以帮到你:
#include <sstream>
#include <iomanip>
#include <iostream>
int main(int argc, char const *argv[])
{
int a = 5386;
std::ostringstream vStream;
for(std::size_t i = 0 ; i < 4 ; ++i)
vStream << "\\x"
<< std::right << std::setfill('0') << std::setw(2) << std::hex
<< ((a >> i*4) & 0xFF);
std::cout << vStream.str() << std::endl;
return 0;
}
我不确定我是否准确地理解了您的问题,但我知道您希望将 int 转换为格式为“\xAA\xAA\xAA\xAA”的字符串。
它使用std::right
、std::setfill('0')
和std::setw(2)
来强制“2”的输出为“02”。 std::hex
是获取一个整数的十六进制表示。
关于c++ - int 到十六进制字符串 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19096185/