salut
je cherche a convertir le plus simplement possible de l'ascii vers l'hexa.
exemple : 0x41 donne 0x0A
0x30 donne 0x00
0x43 donne 0x0C
merci pour l'aide
sof
Version imprimable
salut
je cherche a convertir le plus simplement possible de l'ascii vers l'hexa.
exemple : 0x41 donne 0x0A
0x30 donne 0x00
0x43 donne 0x0C
merci pour l'aide
sof
Puis-je demander comment tu fais pour que 0x41 -> 0x0A et 0x30 -> 0x00 ??Citation:
Envoyé par sofiane61
Jc
c'est justement ce que je recherche. un octet est envoyé par une liaison serie par son code ascii. je recherche à le retouver en sortie.Citation:
Envoyé par fearyourself
exemple:
entree 0xA8
liaison serie 0x41 0x38
sortie 0xA8
j'ai eu du mal ... mais j'ai compris :aie:
sur la table ascii:
-0x41 = 'A'
-0x38 = '8'
et y veux trouver: 0xA8
brouillon:
nota: je suis pas trop en etat de coder, meme des trucs "simples", donc il se peux que ce soit completement faux :aie:Code:
1
2
3
4
5
6
7 char buff[8]; char rcpt[]={0x41,0x38}; long int out; snprintf(buff,8,"0x%c%c",rcpy[0],rcpt[1]); out = strtol(buff,NULL,16);
Si c'est vraiment de l'ASCII, et si tu veux vraiment de la vitesse, tu peux te faire une petite Lookup table de 128 slots.
Mais généralement, j'utilise plutôt un truc du genre.
Bien entendu, ce code suppose que la chaîne str ne contient que des caractères hexadécimaux majuscules. Mais on peut faire le même code avec plus de tests.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 size_t i; unsigned int val; for(i=0 ; str[i]!='\0' ; i++) { char c = str[i]; if(c =< '9') chiffre = c - '0'; else chiffre = c - 'A' + 10; val <<= 4; val |= chiffre; }
Et si on n'est pas en gros besoin de vitesse, on peut utiliser tout simplement strtol() ou strtoul().