Heim >Backend-Entwicklung >C++ >Wie konvertiert man in C zwischen Strings und Hexadezimalzahlen?
In C können Datentypen effizient manipuliert und transformiert werden. Dazu gehören Konvertierungen zwischen Zeichenfolgen und Hexadezimalformaten.
Um eine Zeichenfolge in ihre hexadezimale Darstellung umzuwandeln, besteht ein gängiger Ansatz darin, ein Zeichenarray aus hexadezimalen Ziffern zu verwenden. Hier ist ein Beispiel:
#include <string> std::string string_to_hex(const std::string& input) { static const char hex_digits[] = "0123456789ABCDEF"; std::string output; output.reserve(input.length() * 2); for (unsigned char c : input) { output.push_back(hex_digits[c >> 4]); output.push_back(hex_digits[c & 15]); } return output; }
In dieser Funktion werden die Hexadezimalziffern für den schnellen Zugriff in einem statischen Array gespeichert. Es durchläuft die Eingabezeichenfolge, extrahiert jedes Zeichen und stellt es als zwei hexadezimale Ziffern dar.
Um den Vorgang umzukehren und eine hexadezimale Zeichenfolge zurück in ihre ursprüngliche Darstellung zu konvertieren, müssen Sie kann die Funktion hex_to_string verwenden:
#include <stdexcept> std::string hex_to_string(const std::string& input) { const auto len = input.length(); if (len & 1) throw std::invalid_argument("odd length"); std::string output; output.reserve(len / 2); for (auto it = input.begin(); it != input.end(); ) { int hi = hex_value(*it++); int lo = hex_value(*it++); output.push_back(hi << 4 | lo); } return output; }
Diese Funktion überprüft, ob die Eingabezeichenfolge eine gerade Länge hat (unter der Annahme der Gültigkeit jeder Ziffer) und verwendet die Hilfsfunktion hex_value, um einzelne hexadezimale Ziffern zu interpretieren.
Das obige ist der detaillierte Inhalt vonWie konvertiert man in C zwischen Strings und Hexadezimalzahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!