begin process at 2012 05 30 01:56:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Problème avec des chaînes en hexa


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

Problème avec des chaînes en hexa

lundi 7 juillet 2008 à 12:19:35 | Problème avec des chaînes en hexa

techno_man

Bonjour,

j'ai un petit problème.
Je dois insérer une chaîne en hexa dans la base de registre à partir d'une constante définie (avec la fonction RegSetValueEx).
Je dois donc convertir cette chaine :
hex:4e,5b,00,3c
en :
\x4e\x5b\x00\x3c

Le problème, c'est que mon str_replace maison n'est pas d'accord sur le remplacement de , par \x car il n'y a pas de caractère hexa derrière. J'ai essayé avec \\x mais le résultat n'est plus bon. Comment pourrais-je procéder autrement ?

Auriez vous une idée ?
Merci de votre aide.

Guigui.
lundi 7 juillet 2008 à 15:23:59 | Re : Problème avec des chaînes en hexa

Neo_Fr

Membre Club
Essaye ca:

DWORD __stdcall Replace(LPSTR lpszIn, LPSTR lpszOut)
{
    LPSTR lptr;
    lptr = lpszOut;
    do
    {
        if(*lpszIn == ',') *((WORD*) lptr)++ = 'x\\';
          else *lptr++ = *lpszIn;
    }while(*lpszIn++);
    return (DWORD) (lptr-lpszOut);
}

char szIN[] = "4e,5b,00,3c";
char szOUT[16];
Replace(szIN, szOUT);
MessageBox(0, szOUT, 0, 0x40);

Neo_Fr
lundi 7 juillet 2008 à 15:47:03 | Re : Problème avec des chaînes en hexa

jfrancois

Bonjour,

Voici un petit essai :

#include <stdio.h>


void Convertir
(
    const char* pszEntree // E:chaîne à convertir
   ,char*       pszSortie // S:chaîne résultat
)
{
   const char* pcEntree = pszEntree;
   char*       pcSortie = pszSortie;
   *pcSortie = 0; // terminateur par défaut

   // --- Pointer derrière le ':'
   while (*pcEntree  &&  *pcEntree != ':') ++pcEntree;
   if (*pcEntree != ':') return; // chaîne incorrecte
   ++pcEntree; // saute ':'

   // --- Remplir la chaîne résultat
   while(*pcEntree)
   {
      *pcSortie++ = '\\';
      *pcSortie++ = 'x';
      *pcSortie++ = *pcEntree++;
      *pcSortie++ = *pcEntree++;
      if (*pcEntree == ',') ++pcEntree; // saute ','
   }
   *pcSortie = 0; // terminateur
}


int main(void)
{
   const char* szChaine = "hex:4e,5b,00,3c";
   char szResultat[32];

   Convertir(szChaine,szResultat);
   printf("Entree = %s\n",szChaine);
   printf("Sortie = %s\n",szResultat);
   return 0;
}


Ce qui donne :

Entree = hex:4e,5b,00,3c
Sortie = \x4e\x5b\x00\x3c

Jean-François

lundi 7 juillet 2008 à 19:26:05 | Re : Problème avec des chaînes en hexa

techno_man

Bonjour,

Pour ceux que ca pourra aider :


char *src=KONFIGSTRING;
char dst[]=KONFIGSTRING; // pour allouer de l'espace ..
 int i=0,l=0;
char *p2=dst;
                       
for (char *p=src+4; *p;p+=3)
{
              *p2++ =(char) (hextoint(*p) << 4) + hextoint(*(p+1));
               l++;
}
*p2=0;


int hextoint(char c) {
  c = toupper(c);
  return (c > '9' ? c - 'A' + 10 : c - '0');
}



for (i=0;i<l;i++) printf ("%X ",0xFF&dst[i]);


Guigui.
lundi 7 juillet 2008 à 21:42:31 | Re : Problème avec des chaînes en hexa

Lucky92

Bonsoir,
...et en c++ standard pour ceux que ça intéresse :

#include <iostream>
#include <sstream>

using namespace std;

string my_hex( const string & org )
{
    istringstream iss( org );
    ostringstream ret;
    string tmp;

    if ( getline( iss , tmp , ':' ) )
        while ( getline( iss , tmp , ',' ) )
            ret << "\\x" << tmp ;

    return ret.str().c_str();
}

void main()
{
    cout << my_hex( "hex:4e,5b,00,3c" ) << endl;
}


Cette discussion est classée dans : problème, hexa, chaînes


Répondre à ce message

Sujets en rapport avec ce message

Problème avec les ajouts de chaînes de caractères [ par nisaloncaje ] Bonjour je voudrais ouvrir un fichier en utilisant :ifstream entree (nom_fichier, ios::in|ios::binary);où nom_fichier est le nom du fichier ;)Puis j'e Problème avec les chaînes de caractères [ par raviel ] bonjour j'ai un soucis depuis quelque temps c'est que j'aimerais enregistrer une chaîne de caractère comportant même des espaces dans un fichier .txt Problème avec mes floatant [ par raviel ] Bonjour Je vous expose mon problème l'utilisateur peut rentrer 2 floatant (a et b) et additionnant les 2 pour former le résultat (c) et je souhaite e chargement d'une DLL impossible [ par totoscill ] Bonjour, Je rencontre un problème lors de l'execution de mon application (je travaille sous XP et visual studio 2008). Mon processus fait appelle à problème d'éritage [ par panthere007 ] Salut, Bon je vais essayer d'être clair mai avec l'héritage c'est pas facile précision ce code est programmer sous geany et compiler avec g++ excuser Fonction if ().. et date! [ par oshin ] J'ai un nouveau problème! Pénible ! time_t time_of_day; char bufferT[ 150 ]; time_of_day = time( NULL ); strftime( bufferT, 150, "%d/%m/%Y",localt problème de allocation de tableau [ par boualiasma ] Bonsoir, Je voulais copier le contenu de fichier "exemple.txt" dans un tableau dynamique t de taille inconnue en avance. J'utilise le tableau pour fa Problème d'insértion de la clé dans un arbre binaire de recherche récursivement [ par polobou ] [b]BONJOUR[/b][^^happy8] Comment insérer la clé dans un arbre binaires de recherche récursivement sans utiliser par exemple un tableau [b]Merci[/b][ problème avec la fonction srand() [ par crawhawks21 ] Bonjour à vous les pros de la programmation, je me permet de venir vous trouvez car je ne trouve pas la solution à mon problème, je vous l'expose: je Problème avec la fonction GetIconWndClass [ par Omega15 ] Bonjour a tous, voila, j'ai un petit problème qu'il me faut régler. Étant en service de maintenance logiciel, je debug de nombreux soft, tous plus vie


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,186 sec (3)

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