Преобразование ASCII std:: string в hex
есть ли простой способ преобразовать ASCII std:: string в HEX? Я не хочу преобразовывать его в число, я только хочу преобразовать каждый символ ASCII в его шестнадцатеричное значение. Выходной формат также должен быть строкой std::. т. е.: "тест" будет "0x54 0x45 0x53 0x54" или какой-то аналогичный формат.
Я нашел это решение, но, возможно, есть лучшее (без преобразования string to int в string):
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
2 ответов
Если вы не заботитесь о 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
получить пробелы между символами.