Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3138 connectés 

 


Dernière réponse
Sujet : [VC++] unsigned char* / char*
bud8

BENB a écrit a écrit :

Petits details :  
-les char font au moins 8 bits il peuvent faire plus (32 par exemple) sur certaines machines/compilo.
 
-en C++ on ne cast plus en faisant  
pChar = (char*) pUChar;  
mais
pChar = static_cast<char*> pUChar; ...
ou
pChar = reinterpret_cast<char *> pUChar;  




 
Je te remercie mais lorsque je fais du cast, j'obtiens qqch d'incomprehensible dans ma variable .
Pour info, je realise un plug in qui m'oblige a recuperer un unsigned char * .
Hors si je convertie les pointeurs  
returnedValue= reinterpret_cast<unsigned char *> (concat);
La valeur recuperée est nulle
Donc je doit travailler sur les valeurs elles meme :
*returnedValue= static_cast<unsigned char > (*concat);
et la la valeur est icomprehensible !!!
 
J'ai due oublier qqch mais j'vois pas quoi  :cry:  
 
Donc merci si tu peux m'aider ...


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
bud8

BENB a écrit a écrit :

Petits details :  
-les char font au moins 8 bits il peuvent faire plus (32 par exemple) sur certaines machines/compilo.
 
-en C++ on ne cast plus en faisant  
pChar = (char*) pUChar;  
mais
pChar = static_cast<char*> pUChar; ...
ou
pChar = reinterpret_cast<char *> pUChar;  




 
Je te remercie mais lorsque je fais du cast, j'obtiens qqch d'incomprehensible dans ma variable .
Pour info, je realise un plug in qui m'oblige a recuperer un unsigned char * .
Hors si je convertie les pointeurs  
returnedValue= reinterpret_cast<unsigned char *> (concat);
La valeur recuperée est nulle
Donc je doit travailler sur les valeurs elles meme :
*returnedValue= static_cast<unsigned char > (*concat);
et la la valeur est icomprehensible !!!
 
J'ai due oublier qqch mais j'vois pas quoi  :cry:  
 
Donc merci si tu peux m'aider ...

verdoux Quel Don Juan ce Janos ! :D
janoscoder ah, voici une preuve de raffinement!
BENB Petits details :  
-les char font au moins 8 bits il peuvent faire plus (32 par exemple) sur certaines machines/compilo.
 
-en C++ on ne cast plus en faisant  
pChar = (char*) pUChar;  
mais
pChar = static_cast<char*> pUChar; ...
ou
pChar = reinterpret_cast<char *> pUChar;
janoscoder à savoir que tant que l'on reste dans les char ou unsigned char, les additions, les ops logiques, les soustractions se comportent pareil, qu'il s'agisse d'unsigned char ou de char. La où joue la différence de type, c'est quand il faut étendre les données
(conversion vers un type avec plus de données)
 
char c=-3;
unsigned char uc=c;
int i=c;
cout<<i;        //i=-3
int j=uc;       //(256-3)=253
 
ou quand on fait des + ou des *.
 
Si tu traites ds chaînes de caractères, pas de souci sur char ou unsigned char. Pour le reste, choisis.
(je pense que le champ d'application des (signed) char en opérations arithmétiques est limité vu la mémoire qu'on a ajourd'hui)
Guz

bud8 a écrit a écrit :

Bonjours,
 
J'aimerais connaitre la difference entre ces deux types et savoir s'il existe une fonction permettant de passer de l'un a l'autre .
 
Merci.  




 
Salut,
 
La difference entre un char et un unsigned char est simple.
 
Le char est en fait un signed char cela veut dire qu'il contient une info de signe.
 
 
Un char (signed ou unsigned) est code sur 8 bits.
 
Pour le unsigned char, les 8 bits servent a coder la valeur numerique et aucun bit pour le signe donc la valeur va de 0 a 255.
 
Pour le (signed) char, 7 bits servent a coder la valeur numerique et 1 bit pour le signe donc la valeur va de -128 a 127.
 
Sinon pour passer d'un char* a un unsigned char* il suffit de caster.
 
exemple:
 
char* pChar;
unsigned char* pUChar;
 
pChar = (char*) pUChar;
pUChar = (unsigned char*) pChar;
 
Voila en fait comme tu as des pointeurs ceux ci contiennent tous une adresse, mais en castant tu force le type de donnees vers lequel il pointe c'est tout.
 
J'espere avoir ete a peu pres clair.
 
Tchao.

bud8 Bonjours,
 
J'aimerais connaitre la difference entre ces deux types et savoir s'il existe une fonction permettant de passer de l'un a l'autre .
 
Merci.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)