J'ai trouvé beaucoup de solutions différentes à ce problème, mais toutes ne fonctionnent pas, et beaucoup d'entre elles semblent un peu hacky et inefficaces. Fondamentalement, j'ai une chaîne de données hexadécimales (c'est-à-dire "55 AA 41 2A 00 94 55 AA BB BB 00 FF") que je voudrais convertir en données brutes. Quelle est la meilleure façon de procéder? La solution de Vicky a très bien fonctionné pour moi, mais j'ai changé pour travailler avec des chaînes hexadécimales qui n'ont pas d'espace entre les deux et qui a un peu changé le style.Convertir une chaîne hexadécimale en données
int i = 0;
char *hexString = "55AA412A009455AABBBB00FF"
char *hexPtr = hexString;
unsigned int *result = calloc(strlen(hexString)/2 + 1, sizeof *result);
while (sscanf(hexPtr, "%02x", &result[i++])) {
hexPtr += 2;
if (hexPtr >= hexString + strlen(hexString)) break;
}
return result;
Pourriez-vous préciser, peu de temps, les quelques approches que vous avez essayé et dans quel type de contexte ce code devrait en forme? – nielsj
(Peut-être pas le meilleur, mais le plus court à coup sûr;) duplicata possible de [Code golf - hexadécimal à la conversion binaire (brut)] (http://stackoverflow.com/questions/795027/code-golf-hex-to-raw -binary-conversion) – zaf
zaf, c'est exactement ce que je voulais, désolé je n'ai pas vu ça avant. Je suppose que cela serait en quelque sorte un doublon de cela. – AriX