begin process at 2012 05 29 02:12:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

[ c++ ] pb de convertion hexa


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[ c++ ] pb de convertion hexa

samedi 14 mai 2005 à 14:24:09 | [ c++ ] pb de convertion hexa

devoX

Bonjour a tous,

j'ai un petit soucis, je vous explique:

je dispose d'un text dans un buffer buf et je desire le metre dans un autre buffer buf2 mais en le transformant en hexa.

j'ai creer une fonction convHexa :

void convHexa ( car buf, int size )
{
      buf2 =new char [size];
      int i;
      sprintf( buf2 ,"%02x, buf );
}

le probleme qui se pose c'est que buf2 contient seulement le code du premier caractere de buf.
J'ai aussi essayer:

void convHexa ( char buf, int size )
{
      buf2 =new char [size];
      int i;
      for(i=0 ; i<size ; i++)
         sprintf( buf2[i] ,"%02x, buf [i]);
}

mais la j'ai une erreure que je n'arrive pas a resoudre : subsript reqiere array or pointer type et sprintf can't convert a char to char*

Merci d'avance de votre aide.





samedi 14 mai 2005 à 14:40:31 | Re : [ c++ ] pb de convertion hexa

vecchio56

Administrateur CodeS-SourceS
Pour transformer de bianaire en Hexa, pas besoin de sprintf.
dans buf tu as un caractère, sur deux octets, tu as donc juste à faire
buf2[0] = (buf & 0xF);
if(buf2[0] > 9) buf2[0] += 'A' - 10; // lettre
else buf2[0] += '0'; // chiffre

buf2[1] = (buf & 0xF0) >> 1;
if(buf2[1] > 9) buf2[1] += 'A' - 10;
else buf2[1] += '0';

samedi 14 mai 2005 à 17:10:56 | Re : [ c++ ] pb de convertion hexa

Joky

Membre Club
Et bé en faite ç'est normal aussi,
ce que tu passes en paramètre de ta fonction c'est un caractère : char buf
Heuresement qu'il ne t'en copie un, sinon C++, ben la honte hein
J'aurais été le dire à  sa mere moi

void Aurevoir( void ); //Bonne journée

samedi 14 mai 2005 à 17:32:51 | Re : [ c++ ] pb de convertion hexa

vecchio56

Administrateur CodeS-SourceS
Oui mais un caractère est codé sur 1 octet, donc en hexa ca fait deux chiffre (ou lettres)
samedi 14 mai 2005 à 18:26:51 | Re : [ c++ ] pb de convertion hexa

Joky

Membre Club
Oki oki jprend la porte mdr

void Aurevoir( void ); //Bonne journée

samedi 14 mai 2005 à 18:47:26 | Re : [ c++ ] pb de convertion hexa

devoX

Merci pour votre aide mais je ne comprend vraiment pas se que tu as fais vecchio56....
Peu me dire rapidement en francais ( algo )se que ca fais ?
Merci :)
samedi 14 mai 2005 à 19:28:24 | Re : [ c++ ] pb de convertion hexa

vecchio56

Administrateur CodeS-SourceS
Comme je l'ai dit un carcactère fait 2 symboles en hexa (de 00h à FFh)

Le premier, tu le récupères avec le masque 0x0F. C'est un nombre entre0 et 15, et toi tu veux quelque chose entre 0 et 9 ou A et B. Si c'estentre 0 et 9, tu ajoutes juste '0' (pour obtenir le caractèreimprimable correspondant). Si c'est une lettre (entre 10 et 15), tuenleve 10 (le nombre est entre 0 et 5) et tu ajoutes 'A' (caractèreentre 'A' et 'A'+5='F').
Pour le deuxième caractère c'est pareil, sauf que le masque est 0xF0.Pour obtenir la bonne valeur, il faut décaler à droite, de 4 et pas de1 comme je l'avais dit
J'ai aussi inversé poids fort et faible, ce qui donne finalement:

buf2[0] = (buf & 0xF0) >> 4;
if(buf2[0] > 9) buf2[0] += 'A' - 10;
else buf2[0] += '0';

buf2[1] = (buf & 0xF);
if(buf2[1] > 9) buf2[1] += 'A' - 10; // lettre
else buf2[1] += '0'; // chiffre

buf2[2] = 0;

Tu as conpris?

samedi 14 mai 2005 à 19:50:07 | Re : [ c++ ] pb de convertion hexa

devoX

Oui j'a pigé merci ;)
par contre je trouve ca vraiment de devoir faire toute ces manip sur chaque "demi-octet"... es tu sur qu'il n'y a pas plus simple a base de sprintf....
car en faite j'ai reussit a faire cette convertion tres facilement en mode console....mais en passant mon code pour l'interface...les chose se complique.
Merci pour ton aide, si il n'y a pas d'autre solution je ferais avec la tienne ;)
samedi 14 mai 2005 à 21:54:35 | Re : [ c++ ] pb de convertion hexa

vecchio56

Administrateur CodeS-SourceS
Oui, c'est plus simple avec sprintf mais aussi sprintf fera beaucoupplus de boulot que nécessaire, a commencer par l'analyse de la chaineque tu lui passe. J'aime autant voir ces lignes dans mon code plutotqu'un sprintf
Mais j'ai testé, le premier code que tu as mis avec sprintf marche aussi

samedi 14 mai 2005 à 23:10:38 | Re : [ c++ ] pb de convertion hexa

devoX

bin non c'est bien ca le pb le code que j'ai mis marche pas....il marche que pour 1 caractere...

1 2

Cette discussion est classée dans : int, char, size, buf, buf2


Répondre à ce message

Sujets en rapport avec ce message

problème de pointeur sur char (SUPER HYPER IMPORTANT -> juste pour moi...je supose) [ par levraipig ] bonjour à tous, voila moi j'ai un p'ti problème plutot embêtant.... je dois créer un class qui gère les chaines de caractères (ne me demander pas pou problème de pointeur sur char (SUPER HYPER IMPORTANT -> juste pour moi...je supose) [ par levraipig ] bonjour à tous, voila moi j'ai un p'ti problème plutot embêtant.... je dois créer un class qui gère les chaines de caractères (ne me demander pas pou Objet : ajout et taille [ par scorpion077 ] Bonjour,j'essai de corriger un DS portant sur la POO. voici mon code:--------------------------------------------------------------------------------# du C au C++ [ par nidhaletec ] si quelqu un m aide à convertir cette fonktion en C++ ; c écrit en C ;void remplacer (char *filename, char *str,  char *occ){    FILE *f = fopen(filen Afficher un Int dans une ListBox ? [ par KroOon ] Bonjour alors je vous explique mon petit Probléme je débute en Programmation Pour lla Creation d' Applications Windows.Je souhaiterais A partir d' un Recréer la fonction strstr [ par qubs ] Salut, J'aimerais recoder la fonction strstr mais je n'arrive pas a aboutir et a comprendre le fonctionnement, j'aimerais bien un coup de main svp. = liberation de memoire [ par bobaben ] bonjour, je suis debutant en c++. j'ai un petit souci de liberation de memoire. je voudrai savoir comment peut-on desallouer "new" qui est dans une matrice de cooccurrence [ par ulysse00 ] salut tout le monde , j'ai un code avec c++ qui calcule matrice de cooccurrence mais je n'arrive pas à comprendre le code voila le code void textu [C++] 2 char => 1 int [ par Apaachee ] Bonjour, Je possède une opération : 1+99 que je place dans un tableau de char : coutcin>>exp; //La variable exp contient l'opération Demande l'aide des meilleurs ! ;) [ par jekburn ] Bonjour, Le programme suivant devrait d'en un futur proche sortir et enregistrer toutes les adresses mail existantes. Mais là, la fatigue surement !


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales