Bonjour,
Mon problème est le suivant, j'ai un buffer sous cette forme:
Et j'aimerai le convertir sous le type:Code:uint8* buffer
Seulement je ne sais pas du tout comment faire :(Code:char* buffer
Merci d'avance :)
Version imprimable
Bonjour,
Mon problème est le suivant, j'ai un buffer sous cette forme:
Et j'aimerai le convertir sous le type:Code:uint8* buffer
Seulement je ne sais pas du tout comment faire :(Code:char* buffer
Merci d'avance :)
Bonjour,
uint8 n'est pas un type primitif. Il a forcément été défini quelque-part. Je parierai pour quelque-chose de ce genre
La difficulté de transtyper un unsigned char en char, c'est à dire signé, est que un uint8 va de 0 à 255 et un char va de -128 à 127, alors je ne sais pas très bien ce que cela pourra donner.Code:typedef unsigned char uint8;
Moi, je me poserais la question, pourquoi transtyper un unsigned char en char?
Autrement dit, qu'est-ce qui vous empêche d'utiliser vos uint8 ?
Si c'est définie de cette manière alors c'est parfait je réussirai à me débrouiller avec :) Merci beaucoup:ccool:
Oui, bien-sûr le transtypage d'une adresse, c'est à dire le transtype de l'objet pointé par un pointeur. Ce n'est pas l'adresse qui est transtypée, mais l'objet sur lequel pointe le pointeur.
Peut-être aurais-je du répondre
Est-ce cela que j'aurais dû répondre?Code:
1
2
3
4
5
6
7
8
9 uint8 *Buffer; ... void Fonction(char *chaine); // déclaration // On veut appeler Fonction() et lui passer Buffer en paramètre par son pointeur // on pourra écrire char *chaine= (char*)Buffer; Fonction(chaine); // mais aussi Fonction((char*)Buffer);
Merci d'avance.
Cordialement.
Petit compément
Donc, j'ai supposé que unt8 était un unsigned char, mais on ne sait pas ce que Scary veut faire.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void Fonction(char *ch) { printf("%s\n",ch); } int main(int argc, char* argv[]) { typedef unsigned char uint8; uint8 *Buffer; Buffer =(uint8*)malloc(10 * sizeof(uint8)); for (int i=0; i<9; i++) Buffer[i]=201+i; Buffer[9]='\0'; Fonction((uint8*)Buffer); while (!kbhit()); }
@ Pierre Dolez :Il faut être précis dans la formulation : on ne peut pas changer le type d'un objet. Un objet a un type donné à sa création et le conserve jusqu'à sa mort. Ce qu'on peut (parfois) faire, c'est changer le type d'une valeur (qui peut être la valeur d'un objet évidemment) pour obtenir une valeur d'un autre type.Citation:
.... c'est à dire le transtype de l'objet pointé par un pointeur. Ce n'est pas l'adresse qui est transtypée, mais l'objet sur lequel pointe le pointeur.
C'est pourquoi on ne peut écrire quelque chose comme (int)i = ..... ou ((int) i)++
En l'occurence, dans la question posée, il s'agit bien de transtyper l'adresse de l'objet.
Oui, mais quelle est la réponse à la question?