有没有一种简单的方法可以将ASCII std::string转换为HEX?我不想将其转换为数字,我只想将每个 ASCII 字符转换为它的十六进制值。输出格式也应该是 std::string。即:"TEST"将是"0x54 0x45 0x53 0x54"或类似的格式。
我找到了这个解决方案,但也许有一个更好的解决方案(没有字符串到 int 到字符串的转换):
std::string teststring = "TEST";
std::stringstream hValStr;
for (std::size_t i=0; i < teststring.length(); i++)
{
int hValInt = (char)teststring[i];
hValStr << "0x" << std::hex << hValInt << " ";
}
谢谢
/MSPOERR
如果你不关心 0x,使用 std::copy
很容易做到:
#include <algorithm>
#include <sstream>
#include <iostream>
#include <iterator>
#include <iomanip>
namespace {
const std::string test="hello world";
}
int main() {
std::ostringstream result;
result << std::setw(2) << std::setfill('0') << std::hex << std::uppercase;
std::copy(test.begin(), test.end(), std::ostream_iterator<unsigned int>(result, " "));
std::cout << test << ":" << result.str() << std::endl;
}
我认为,对另一个问题的回答可以满足您的需求。您必须添加一个" "
作为分隔符参数,以便ostream_iterator
在字符之间获取空格。