Maison >développement back-end >C++ >Comment convertir efficacement entre des chaînes hexadécimales et des chaînes standard en C ?

Comment convertir efficacement entre des chaînes hexadécimales et des chaînes standard en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-15 22:23:13914parcourir

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

Conversion de chaînes hexadécimales en chaînes en C

La conversion de chaînes entre les formats de texte hexadécimaux et standard nécessite une approche robuste en C . Voici un guide détaillé :

Convertir une chaîne en hexadécimal :

La fonction string_to_hex() offre une solution simple :

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

Convertir de l'hexadécimal en chaîne :

Pour la conversion de hexadécimal en chaîne, la fonction hex_to_string() garantit la précision :

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

Exemple d'utilisation :

Pour démontrer la fonctionnalité :

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;

Sortie :

Hexadecimal representation: 48656c6c6f20576f726c64
Recovered string: Hello World

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn