Convertir une chaîne de caractères en Hex en C++

Jinku Hu 12 octobre 2023
  1. Utilisez std::cout et std::hex pour convertir une chaîne de caractères en valeur hexadécimale en C++
  2. Utilisez std::stringstream et std::hex pour convertir la chaîne de caractères en valeur hexadécimale en C++
Convertir une chaîne de caractères en Hex en C++

Cet article présente plusieurs méthodes pour convertir une chaîne de caractères en hexadécimal en C++.

Utilisez std::cout et std::hex pour convertir une chaîne de caractères en valeur hexadécimale en C++

La notation hexadécimale est un format courant pour la lecture de fichiers binaires représentant des fichiers de programmes, des formats codés ou simplement du texte. Ainsi, il faudrait générer le contenu des fichiers avec des données hexadécimales et le sortir selon les besoins.

Dans cet exemple, nous sortons l’objet string stocké sous forme de caractères hexadécimaux sur la console. Notez que le C++ fournit un manipulateur d’E/S std::hex qui peut modifier la base de nombres des données du flux. Un objet string doit être décomposé en caractères uniques et ensuite modifié individuellement avec std::hex pour obtenir leur représentation hexadécimale respective. Nous implémentons la boucle basée sur la plage pour itérer sur les caractères string et rediriger les données modifiées vers le flux cout.

#include <iostream>
#include <iterator>
#include <sstream>
#include <string>

using std::cout;
using std::endl;
using std::hex;
using std::string;
using std::stringstream;

int main() {
  string s1 = "This will be converted to hexadecimal";
  string s2;

  cout << "string: " << s1 << endl;
  cout << "hexval: ";
  for (const auto &item : s1) {
    cout << hex << int(item);
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Production :

string: This will be converted to hexadecimal
hexval: 546869732077696c6c20626520636f6e76657274656420746f2068657861646563696d616c

Utilisez std::stringstream et std::hex pour convertir la chaîne de caractères en valeur hexadécimale en C++

La méthode précédente n’a pas la caractéristique de stocker les données hexadécimales dans l’objet. La solution à ce problème est de créer un objet stringstream, dans lequel nous insérons les valeurs hexadécimales des caractères string en utilisant l’itération. Une fois que les données sont dans stringstream, il peut construire un nouvel objet string pour stocker les données de caractères modifiées.

Notez que les données peuvent être sorties directement de l’objet stringstream, mais dans l’exemple de code suivant, une forme plus simple - cout << string est utilisée. Un autre cas d’utilisation finale pourrait être d’écrire les données hexadécimales directement dans le fichier, en utilisant les utilitaires de système de fichiers de la bibliothèque standard.

#include <iostream>
#include <iterator>
#include <sstream>
#include <string>

using std::cout;
using std::endl;
using std::hex;
using std::string;
using std::stringstream;

int main() {
  string s1 = "This will be converted to hexadecimal";
  string s2;
  stringstream ss;

  cout << "string: " << s1 << endl;

  for (const auto &item : s1) {
    ss << hex << int(item);
  }
  s2 = ss.str();
  cout << "hexval: " << s2 << endl;

  return EXIT_SUCCESS;
}

Production :

string: This will be converted to hexadecimal
hexval: 546869732077696c6c20626520636f6e76657274656420746f2068657861646563696d616c
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C++ String