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

Comment puis-je convertir une chaîne hexadécimale en tableau d'octets en C ?

Patricia Arquette
Libérer: 2025-01-01 01:22:16
original
645 Les gens l'ont consulté

How Can I Convert a Hex String to a Byte Array in C  ?

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

Pour convertir une chaîne hexadécimale de longueur variable comme "01A1" en un tableau d'octets, il y a existe plusieurs méthodes que vous pouvez envisager :

Utiliser un vecteur de Caractères

L'extrait de code suivant montre comment utiliser un vecteur de caractères pour stocker le tableau d'octets converti :

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

  for (unsigned int i = 0; i < hex.length(); i += 2) {
    std::string byteString = hex.substr(i, 2);
    char byte = (char) strtol(byteString.c_str(), NULL, 16);
    bytes.push_back(byte);
  }

  return bytes;
}
Copier après la connexion

Cette fonction prend une chaîne hexadécimale en entrée et parcourt son personnages par paires. Chaque paire de caractères est convertie en un seul octet à l'aide de la fonction strtol, qui interprète la chaîne hexadécimale comme une représentation hexadécimale et renvoie la valeur décimale équivalente. L'octet résultant est ensuite ajouté au vecteur.

Utilisation d'un tableau de caractères

Vous pouvez également stocker le tableau d'octets dans un tableau de caractères :

char* HexToBytes(const std::string& hex, int& length) {
  length = hex.length() / 2;
  char* bytes = new char[length];

  for (unsigned int i = 0; i < hex.length(); i += 2) {
    std::string byteString = hex.substr(i, 2);
    bytes[i / 2] = (char) strtol(byteString.c_str(), NULL, 16);
  }

  return bytes;
}
Copier après la connexion

Dans ce cas, la fonction prend la chaîne hexadécimale et une référence entière qui stockera la longueur résultante du tableau d'octets. Il alloue dynamiquement de la mémoire pour le tableau d'octets et le remplit de la même manière que la solution vectorielle.

Ces deux approches produisent un tableau d'octets qui peut être écrit dans un fichier et correctement interprété comme les données binaires représentées. par la chaîne hexagonale d'origine.

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