Heim >Backend-Entwicklung >C++ >Wie konvertiert man effizient zwischen Hexadezimalzeichenfolgen und Standardzeichenfolgen in C?

Wie konvertiert man effizient zwischen Hexadezimalzeichenfolgen und Standardzeichenfolgen in C?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-15 22:23:13914Durchsuche

How to Efficiently Convert Between Hexadecimal Strings and Standard Strings in C  ?

Konvertieren hexadezimaler Zeichenfolgen in Zeichenfolgen in C

Die Zeichenfolgenkonvertierung zwischen Hexadezimal- und Standardtextformaten erfordert einen robusten Ansatz in C. Hier ist eine detaillierte Anleitung:

String in Hexadezimal konvertieren:

Die Funktion string_to_hex() bietet eine einfache Lösung:

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 in String konvertieren:

Zum Konvertieren von Hexadezimal zum String sorgt die Funktion hex_to_string() für Genauigkeit:

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

Beispielverwendung:

Um die Funktionalität zu demonstrieren:

std::string original_string = "Hello World";
std::string hex_string = string_to_hex(original_string);
std::cout << "Hexadecimal representation: " << hex_string << std::endl;
std::string recovered_string = hex_to_string(hex_string);
std::cout << "Recovered string: " << recovered_string << std::endl;

Ausgabe :

Hexadecimal representation: 48656c6c6f20576f726c64
Recovered string: Hello World

Das obige ist der detaillierte Inhalt vonWie konvertiert man effizient zwischen Hexadezimalzeichenfolgen und Standardzeichenfolgen in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn