Konvertieren von String in Hex in C++

  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++

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 <string>
#include <sstream>
#include <iterator>

using std::cout; using std::endl;
using std::string; using std::hex;
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 <string>
#include <sstream>
#include <iterator>

using std::cout; using std::endl;
using std::string; using std::hex;
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

Verwandter Artikel - C++ String

  • Prüfen, ob String palindromisch ist in C++
  • Verwandter Artikel - C++ Hex

  • Wie man eine Zeichenkette in C++ in Tokens übersetzt
  • Wie Sie feststellen, ob eine Zeichenkette eine Zahl in C++ ist