existe-t-il un moyen simple de convertir un std :: ssortingng ASCII en HEX? Je ne veux pas le convertir en nombre, je veux seulement convertir chaque caractère ASCII en sa valeur HEX. Le format de sortie doit également être un std :: ssortingng. C’est-à-dire que “TEST” serait “0x54 0x45 0x53 0x54” ou un format similaire.
J’ai trouvé cette solution, mais il existe peut-être une meilleure solution (sans conversion de chaîne en chaîne):
std::ssortingng testssortingng = "TEST"; std::ssortingngstream hValStr; for (std::size_t i=0; i < teststring.length(); i++) { int hValInt = (char)teststring[i]; hValStr << "0x" << std::hex << hValInt << " "; }
Merci,
/ mspoerr
Si vous ne vous souciez pas de 0x, il est facile d’utiliser std::copy
:
#include #include #include #include #include namespace { const std::ssortingng test="hello world"; } int main() { std::ossortingngstream result; result << std::setw(2) << std::setfill('0') << std::hex << std::uppercase; std::copy(test.begin(), test.end(), std::ostream_iterator(result, " ")); std::cout << test << ":" << result.str() << std::endl; }
Cette réponse à une autre question fait ce que vous voulez, je pense. Vous devez append un " "
tant qu’argument séparateur pour ostream_iterator
pour obtenir des espaces entre les caractères.