Maison >développement back-end >C++ >Comment convertir des chaînes en hexadécimal et inversement en C ?

Comment convertir des chaînes en hexadécimal et inversement en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-19 11:25:09199parcourir

How to Convert Strings to Hexadecimal and Back in C  ?

Conversion de chaînes en hexadécimal et inversement en C

La manipulation de chaînes et de nombres hexadécimaux est une tâche courante en programmation. En C , la bibliothèque standard fournit un ensemble de fonctions pour ces opérations.

String to Hex (string_to_hex)

La conversion d'une chaîne en hexadécimal est réalisée à l'aide de la fonction string_to_hex . La fonction parcourt chaque caractère de la chaîne d'entrée, extrait sa valeur hexadécimale et l'ajoute à la chaîne de sortie. Par exemple, la chaîne "Hello World" serait convertie en "48656C6C6F20576F726C64".

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

Hex en chaîne (hex_to_string)

Pour reconvertir une chaîne hexadécimale à une chaîne normale, utilisez la fonction hex_to_string. Ici, chaque paire de chiffres hexadécimaux est convertie en un entier et les entiers résultants sont concaténés pour former la chaîne de sortie.

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

Cela vous permet de convertir sans effort entre une chaîne et des données hexadécimales en C, ce qui en fait pratique pour divers scénarios de programmation.

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