Konvertieren von Strings in Hexadezimalzahlen und umgekehrt in C
Das Konvertieren von Strings in Hexadezimalzahlen und umgekehrt ist in vielen Programmierszenarien eine häufige Aufgabe. In C gibt es mehrere Ansätze, um diese Konvertierung effizient durchzuführen.
String-zu-Hexadezimal-Konvertierung
Um einen String in seine hexadezimale Darstellung umzuwandeln, können wir eine Schleife und verwenden bitweise Operationen. Für jedes Zeichen in der Zeichenfolge können wir seinen ASCII-Wert extrahieren, ihn mithilfe der Bitverschiebungstechnik (Rechts- und Linksverschiebung) in Hexadezimal umwandeln und die resultierenden Hexadezimalziffern an eine Ausgabezeichenfolge anhängen.
Hier ist eine Beispielimplementierung:
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; }
Hexadezimal zu String Konvertierung
Um eine hexadezimale Zeichenfolge wieder in ihre ursprüngliche Zeichendarstellung zu dekodieren, verwenden wir eine ähnliche Schleifenstruktur. Wir analysieren die Eingabezeichenfolge jeweils für zwei Zeichen, konvertieren jedes Hexadezimalziffernpaar mithilfe einer Nachschlagetabelle oder bitweiser Operationen in den entsprechenden ASCII-Wert und sammeln die dekodierten Zeichen in einer Ausgabezeichenfolge.
Hier ist eine Funktion dazu Führen Sie diese Konvertierung durch:
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; } int hex_value(unsigned char hex_digit) { static const signed char hex_values[256] = {...}; int value = hex_values[hex_digit]; if (value == -1) throw std::invalid_argument("invalid hex digit"); return value; }
Das obige ist der detaillierte Inhalt vonWie konvertiert man Strings in C effizient in Hexadezimalzahlen und umgekehrt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!