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