Converti stringa in esadecimale in C++

Jinku Hu 12 ottobre 2023
  1. Usa std::cout e std::hex per convertire la stringa in valore esadecimale in C++
  2. Usa std::stringstream e std::hex per convertire la stringa in valore esadecimale in C++
Converti stringa in esadecimale in C++

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
Autore: 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

Articolo correlato - C++ String