Konvertieren von String in Hex in C++
-
Verwendung von
std::cout
undstd::hex
zur Konvertierung von String in Hexadezimalwert in C++ -
Verwenden von
std::stringstream
undstd::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 <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
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 FacebookVerwandter Artikel - C++ String
- Finden Sie das erste sich wiederholende Zeichen in einer Zeichenfolge in C++
- Finden Sie die längste gemeinsame Teilzeichenfolge in C++
- Großschreiben des ersten Buchstabens einer Zeichenfolge in C++
- Vergleich von String und Character in C++
- Entfernen Sie das letzte Zeichen aus einer Zeichenkette in C++
- Abrufen des letzten Zeichens einer Zeichenkette in C++