J'essaye de convertir un caractère [] en ASCII en caractère [] en hexadécimal.Convertir ascii char [] en caractère hexadécimal [] en C
Quelque chose comme ceci:
bonjour -> 68656C6C6F
Je veux lire par le clavier de la chaîne. Il doit comporter 16 caractères.
Ceci est mon code maintenant. Je ne sais pas comment faire cette opération. Je l'ai lu strol mais je pense que convertir simplement numéro str int ... hex
#include <stdio.h>
main()
{
int i = 0;
char word[17];
printf("Intro word:");
fgets(word, 16, stdin);
word[16] = '\0';
for(i = 0; i<16; i++){
printf("%c",word[i]);
}
}
J'utilise fgets parce que je lis est mieux que fgets mais je peux le changer si nécessaire. En relation avec ceci, j'essaye de convertir la chaîne lue dans un tableau uint8_t, joignant chaque 2 octets en un pour obtenir le nombre hexadécimal.
J'ai cette fonction que j'utilise beaucoup dans arduino donc je pense que cela devrait fonctionner dans un programme C normal sans problèmes.
uint8_t* hex_decode(char *in, size_t len, uint8_t *out)
{
unsigned int i, t, hn, ln;
for (t = 0,i = 0; i < len; i+=2,++t) {
hn = in[i] > '9' ? (in[i]|32) - 'a' + 10 : in[i] - '0';
ln = in[i+1] > '9' ? (in[i+1]|32) - 'a' + 10 : in[i+1] - '0';
out[t] = (hn << 4) | ln;
printf("%s",out[t]);
}
return out;
}
Mais, chaque fois que j'appelle cette fonction dans mon code, je reçois une erreur de segmentation.
L'ajout de ce code au code de la première réponse:
uint8_t* out;
hex_decode(key_DM, sizeof(out_key), out);
J'ai essayé de passer tous les paramètres nécessaires et obtenir en dehors tableau ce que je dois, mais il échoue ...
'uint8_t * out;' -> 'uint8_t * out = calloc (sizeof (out_key), sizeof (* out));' ou 'strlen (key_DM) + 1' au lieu de' sizeof (out_key) '. – BLUEPIXY