Maison > développement back-end > C++ > Comment convertir efficacement une chaîne hexadécimale en un tableau d'octets en C ?

Comment convertir efficacement une chaîne hexadécimale en un tableau d'octets en C ?

Patricia Arquette
Libérer: 2024-12-18 19:26:12
original
482 Les gens l'ont consulté

How to Efficiently Convert a Hex String to a Byte Array in C  ?

Conversion de chaîne hexadécimale en tableau d'octets

La conversion d'une chaîne hexadécimale de longueur variable en tableau d'octets est une tâche courante en programmation, permettant la représentation de données binaires dans un format lisible par l'homme. Voici comment y parvenir efficacement :

Pour convertir une chaîne hexadécimale telle que "01A1" en un tableau d'octets, nous pouvons exploiter la fonction strtol() intégrée pour effectuer la conversion. L'implémentation suivante crée un std::vector de caractères pour stocker le tableau d'octets :

std::vector<char> HexToBytes(const std::string& hex) {
  std::vector<char> bytes;

  // Loop through the hex string in pairs of characters
  for (unsigned int i = 0; i < hex.length(); i += 2) {
    // Extract the current pair of characters
    std::string byteString = hex.substr(i, 2);

    // Convert the pair to a char using strtol()
    char byte = (char)strtol(byteString.c_str(), NULL, 16);

    // Append the char to the byte array
    bytes.push_back(byte);
  }

  // Return the byte array
  return bytes;
}
Copier après la connexion

Cette approche fonctionne pour toute chaîne hexadécimale de longueur paire. La fonction strtol() prend un pointeur vers le tableau de caractères byteString.c_str() et la base (16 pour hexadécimal).

En utilisant cette fonction HexToBytes(), vous pouvez facilement convertir une chaîne hexadécimale en octet tableau, vous permettant de travailler avec des données binaires de manière pratique et flexible.

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!

source:php.cn
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