Konvertieren von String in Hex in C++

Jinku Hu 12 Oktober 2023
  1. Verwendung von std::cout und std::hex zur Konvertierung von String in Hexadezimalwert in C++
  2. Verwenden von std::stringstream und std::hex zum Konvertieren von Strings in Hexadezimalwerte in C++
Konvertieren von String in Hex in C++

Dieser Artikel demonstriert mehrere Methoden, wie man String in C++ in Hex konvertiert.

Verwendung von std::cout und std::hex zur Konvertierung von String in Hexadezimalwert in C++

Die hexadezimale Notation ist ein gängiges Format zum Lesen von Binärdateien, die Programmdateien, verschlüsselte Formate oder einfach nur Text darstellen. Man müsste also den Inhalt einer Datei mit hexadezimalen Daten erzeugen und bei Bedarf ausgeben.

In diesem Beispiel geben wir das gespeicherte string-Objekt als hexadezimale Zeichen auf der Konsole aus. Beachten Sie, dass C++ einen std::hex E/A-Manipulator bereitstellt, der die Zahlenbasis der Stream-Daten ändern kann. Ein string-Objekt sollte in einzelne Zeichen zerlegt und dann einzeln mit std::hex in ihre jeweilige hexadezimale Darstellung modifiziert werden. Wir implementieren die bereichsbasierte Schleife, um über die string-Zeichen zu iterieren und die modifizierten Daten in den cout-Stream umzuleiten.

#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;
}

Ausgabe:

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

Verwenden von std::stringstream und std::hex zum Konvertieren von Strings in Hexadezimalwerte in C++

Bei der vorherigen Methode fehlt die Möglichkeit, die hexadezimalen Daten im Objekt zu speichern. Die Lösung für dieses Problem besteht darin, ein stringstream-Objekt zu erstellen, in das wir die Hexadezimalwerte der string-Zeichen mithilfe der Iteration einfügen. Sobald sich die Daten in stringstream befinden, kann ein neues string-Objekt zum Speichern der geänderten Zeichendaten erstellt werden.

Beachten Sie, dass die Daten direkt aus dem Objekt stringstream ausgegeben werden können, aber im folgenden Beispielcode wird eine einfachere Form - cout << string - verwendet. Ein alternativer Anwendungsfall könnte sein, die hexadezimalen Daten direkt in die Datei zu schreiben, unter Verwendung von Dateisystem-Dienstprogrammen der Standardbibliothek.

#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;
}

Ausgabe:

string: This will be converted to hexadecimal
hexval: 546869732077696c6c20626520636f6e76657274656420746f2068657861646563696d616c
Autor: 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

Verwandter Artikel - C++ String