HOWTO · C++

Converti stringa in esadecimale in C++

Questo articolo introduce come convertire una stringa in un valore esadecimale in C++

In questa pagina

Questo articolo illustrerà più metodi su come convertire una stringa in esadecimale in C++.

Usa std::cout e std::hex per convertire la stringa in valore esadecimale in C++

La notazione esadecimale è un formato comune per la lettura di file binari che rappresentano file di programma, formato codificato o solo testo. Pertanto, è necessario generare il contenuto del file con dati esadecimali e visualizzarlo secondo necessità.

In questo esempio, restituiamo alla console l’oggetto stringa memorizzato come caratteri esadecimali. Notare che C++ fornisce un manipolatore I/O std::hex che può modificare la base numerica dei dati del flusso. Un oggetto stringa dovrebbe essere scomposto come caratteri singoli e poi modificato individualmente con std::hex nella rispettiva rappresentazione esadecimale. Implementiamo il bucle basato sulla gamma per iterare su caratteri stringa e reindirizzare i dati modificati al flusso 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;
}

Produzione:

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

Usa std::stringstream e std::hex per convertire la stringa in valore esadecimale in C++

Il metodo precedente non ha la funzionalità di memorizzare i dati esadecimali nell’oggetto. La soluzione a questo problema è creare un oggetto stringstream, dove inseriamo i valori esadecimali dei caratteri stringa usando l’iterazione. Una volta che i dati sono in stringstream, può costruire un nuovo oggetto stringa per memorizzare i dati dei caratteri modificati.

Si noti che i dati possono essere emessi direttamente dall’oggetto stringstream, ma nel seguente codice di esempio viene impiegata una forma più semplice - cout << string. Un caso di utilizzo finale alternativo potrebbe essere quello di scrivere i dati esadecimali direttamente nel file, utilizzando le utilità del file system della libreria 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;
}

Produzione:

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