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
Libérer: 2024-12-15 22:23:13
original
998 Les gens l'ont consulté

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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;
Copier après la connexion

Sortie :

Hexadecimal representation: 48656c6c6f20576f726c64
Recovered string: Hello World
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal