begin process at 2012 05 28 23:01:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

conversion string (binaire) to string (hexa)


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

conversion string (binaire) to string (hexa)

mercredi 30 août 2006 à 10:41:12 | conversion string (binaire) to string (hexa)

janiaut

Bonjour, voila je susi toujours dans mon big programme, j'ai un petit problème sur une conversion d'un string (de mot binaire) en conversion de string (de mot hexa). voila ce que j'ai effectué :
//Le message exemple est : "10001101001010011" je voudrais le résultat  suivant : "1 1A52"

std::string bin_Hexa(std::string & chaine)

    int longueur = chaine.size();  // longueur en nb de caractere de la chaine entree
    int i = 0, j = 0,separateur = 0; 
    int bits = 3;  // nombre d'octets dans un bit (de 0 à 7)
    int reste;  // reste de bits
    string chainetemp, chainelongue; // chaine destination en binaire

 reste = longueur%4;      //calcul le nombre de bits 
 i = longueur;
 while(i>0)
 {
     if(i>=3)      //si le nombre de bits restant est supérieur a trois on releve la chaine
     {               // pb ici la chaine ne contient pas
         chainetemp = chaine[i-3]+chaine[i-2]+chaine[i-1]+chaine[i];
         i= i-4;
      }
     else
     {
         chainetemp = "";            
         for(j=0;j<(bits+1-reste);j++)
         { 
             chainetemp += "0";      //rajoute des 0 pour les derniers octets dans notre cas pour le 1 qui est seul
         }
         for(j=0;j<reste;j++)
         { 
          chainetemp += chaine[reste-j];
          i--;
      }

  }
  
  switch (chainetemp)      //erreur dans le switch lors d'un passage de string
  {
   case "0000": chainelongue = "0"+ chainelongue; break;// 'valeur hexa '0'
   case "0001": chainelongue = "1"+ chainelongue;// 'valeur hexa '1'
   case "0010": chainelongue = "2"+ chainelongue;// 'valeur hexa '2'
   case "0011": chainelongue = "3"+ chainelongue;// 'valeur hexa '3'
   case "0100": chainelongue = "4"+ chainelongue;// 'valeur hexa '4'
   case "0101": chainelongue = "5"+ chainelongue;// 'valeur hexa '5'
   case "0110": chainelongue = "6"+ chainelongue;// 'valeur hexa '6'
   case "0111": chainelongue = "7"+ chainelongue;// 'valeur hexa '7'
   case "1000": chainelongue = "8"+ chainelongue;// 'valeur hexa '8'
   case "1001": chainelongue = "9"+ chainelongue;// 'valeur hexa '9'
   case "1010": chainelongue = "A"+ chainelongue;// 'valeur hexa 'a ou A'
   case "1011": chainelongue = "B"+ chainelongue;// 'valeur hexa 'b ou B'
   case "1100": chainelongue = "C"+ chainelongue;// 'valeur hexa 'c ou C'
   case "1101": chainelongue = "D"+ chainelongue;// 'valeur hexa 'd ou D'
   case "1110": chainelongue = "E"+ chainelongue;// 'valeur hexa 'e ou E'
   case "1111": chainelongue = "F"+ chainelongue;// 'valeur hexa 'f ou F'
   default:  std::cout<<"ERREUR DE SAISIE"<<std::endl; return 0;
  }
  if(separateur >= 3)
  {
   chainelongue = " "+ chainelongue;      //rajoute un séparateur tout les 4 octets (car beaucoup de chiffres => plus lisible 
   separateur=0;
  }
  else
  {
   separateur++;
  }
 
 } // fin de for - passage au quatre caracteres suivants de la chaine d'origine jusqu'a fin de chaine
 chainelongue+='\0'; // fermeture de la chaine de caractère génerée

 return chainelongue;
}
Merci beaucoup (plus spécialement à luthor qui m'a deja bcp aidé  )

mercredi 30 août 2006 à 12:06:53 | Re : conversion string (binaire) to string (hexa)

juju12

Salut;
Déjà tu devrais compléter la chaîne directement avec des 0 au lieu de tester à chaque fois, par ex. :

while(chaine.size()%4!=0) chaine="0"+chaine;

Puis ensuite :

int size=chaine.size();

for(int i=0;i<size;i+=4)
{
   string Str=chaine[i+3]+chaine[i+2]+chaine[i+1]+chaine[i];
   if(Str=="0000") chainelongue="0"+chainelongue;
   if(Str=="0001") chainelongue="1"+chainelongue;
   // ...
}

ça devrait aller (enfin j'espère)...



Cette discussion est classée dans : valeur, chaine, case, hexa, chainelongue


Répondre à ce message

Sujets en rapport avec ce message

switch case et valeur bouléen [ par hop ] Salut,Je souhaiterai utliser la fonction switch casemais en testant plusieurs valeur bouléen:Du style si j'appel les valeur booleenvaleur1 valeur2 val disparition de valeur !!!!!!!!!!!!!!! [ par toto000 ] Bonjour,Alors voila j'ai une fonction menufonc (menu de la souris) avec en case 1: taille de l'image (du fichier que comporte la variable fichier_imag Copie d'une chaine Hexa dans une Chaine de caractères [ par lyde ] Bonjour,je souhaiterais copier la chaine hexa "010601AE0205040045" dans une variable de type TCHAR * qui est quasiment equivalente a un char *.Cependa chaine binaire en chaine hexa [ par thomas59553 ] bonjour a tous ;)je cherche une methode permettant de convertir une chaine binaire en une chaine hexale contenu de la chaine binaire est deja verifiee modifier la valeur d'un offset...? [ par mayti ] Bonjour, voilà dans mon projet je dois modifier par exemple la valeur hexa de l'offset 77C dans un exe précis, manuelement avec un éditeur hexa pas de Le getch() ne fonctionne pas comme je veux [ par kobee12 ] Bonjour à tous,j'ai un ch'tit programme avec une fonction de saisie. J'utilise la fonction getch() pour récupérer chaque caractère que l'on tape.J'uti euhhh ... :-) desolé, c'est compliqué a expliquer... [ par BertaNd ] salut c'est assez compliqué a expliquer donc je met une source, ca parle mieux ! (API win32) tout le tralala de la creation de la fenetre etc...     Envoie d'une valeur en hexadecimal sur le port COM1 [ par ekinox17 ] Voilà tout est dit dans le titre je doit donner des valeur en hexa a une machine en rs232 mais en lui envoyant des valeur en hexa . The big problem is sudoku HELP [ par Hellboy67 ] Voila j'essaie de faire un prog qui remplie les cases d'un sudokuj'ai ma fonction candidats qui me renvoie une file contenant tout les candidats possi prog c : chaine en valeur de retour d'une fonction [ par laetitiavincent ] Bonjour je souhaiterais faire une fonction dans laquelle j'ai une chaine de caractères que je voudrais renvoyée dans le menu principal. Comment puis-j


Nos sponsors


Sondage...

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 : 0,530 sec (4)

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