IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

(Mi algo - mi C) 2 caracteres pour 1 caractère


Sujet :

C

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Points : 253
    Points
    253
    Par défaut (Mi algo - mi C) 2 caracteres pour 1 caractère
    Salut a tous

    Considérons le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int main(int argv, char** argv)
    {
    unsigned char tocrypt[8];
    }
    Compilons et executons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    a.exe 125454121534156F
    donc argv[1]=125454121534156F, je voudrais à partir de ce dernier trouver un procédé tel que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    argv[1]=125454121534156F
     
     
    tocrypt[0]=12
    tocrypt[1]=54
    tocrypt[2]=54
    tocrypt[3]=12
    tocrypt[4]=15
    tocrypt[5]=34
    tocrypt[6]=15
    tocrypt[7]=6F
    Autrement dit un couple de deux caracteres d'argv[1] constitue un caractere de tocrypt ..
    Quelqu'un a t'il une proposition à faire ??
    Merci d'avance a ceux qui proposeront une solution !!
    TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS

  2. #2
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Salut,

    Apparemment il y a un truc qui va pas dans ton code.
    Tu déclares un tableau de caractère, puis tu veux stocker deux caractères dans un emplacement de ce tableau.

    Il faudrait faire ta déclaration comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char tocrypt[8][2];
    Ensuite une boucle for

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(i = 0; i < 16; i+=2){
    strcopy(tocrypt[i/2][0], argv[i];
    strcat(tocrypt[i/2][1], argv[i+1]);
    }
    Ca devrait marcher.
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Pas très propre, mais ça devrait marcher, si j'ai compris ce que tu voulais dire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char* argv[])
    {
    	strcpy(arg, argv[1]);
    	int val;
    	unsigned char tocrypt[8]; 
    	char temp[3];
    	int i;
    	temp[2] = '\0';
    	for(i = 0; i < 8; i++)
    	{
    		temp[0] = arg[i * 2];
    		temp[1] = arg[i * 2 + 1];
    		sscanf(temp, "%2x", &val);
    		tocrypt[i] = (unsigned char) val;
    		//printf("\n%x", tocrypt[i]);
    	}
    	return 0;
     
    }

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par rurouni alex
    Salut,

    Apparemment il y a un truc qui va pas dans ton code.
    Tu déclares un tableau de caractère, puis tu veux stocker deux caractères dans un emplacement de ce tableau.

    Il faudrait faire ta déclaration comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char tocrypt[8][2];
    Non, non , argv[1][i] et argv[1][i+1] sont 2 caractères c'est vrai mais concaténer l'un à l'autre il constitue un seul caractere . Autrement dit argv[1][i] contient le bit de poids fort de l'octet et argv[1][i+1] le bit de poid faible , par conséquent je veux et je dois définir tocrypt de la facon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char tocrypt[8]

    Ensuite une boucle for

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(i = 0; i < 16; i+=2){
    strcopy(tocrypt[i/2][0], argv[i];
    strcat(tocrypt[i/2][1], argv[i+1]);
    }
    Ca devrait marcher.
    Pas dans mon cas mais j'avoue que je m'étais mal expliqué!!
    A bientot et merci d'avoir essayé
    TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par Woyzeck
    Pas très propre, mais ça devrait marcher, si j'ai compris ce que tu voulais dire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char* argv[])
    {
    	strcpy(arg, argv[1]);
    	int val;
    	unsigned char tocrypt[8]; 
    	char temp[3];
    	int i;
    	temp[2] = '\0';
    	for(i = 0; i < 8; i++)
    	{
    		temp[0] = arg[i * 2];
    		temp[1] = arg[i * 2 + 1];
    		sscanf(temp, "%2x", &val);
    		tocrypt[i] = (unsigned char) val;
    		//printf("\n%x", tocrypt[i]);
    	}
    	return 0;
     
    }
    Merci ca m'a donné l'idée et j'ai réussi à optimiser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #include <stdio.h>
     
    int main(int argc, char** argv)
    {
      int i;
      unsigned char tocrypt[8]; 
      for(i = 0; i < 8; i++)
        {
          sscanf(&(argv[1][i*2]), "%2X", &(unsigned char)tocrypt[i]);
          printf("tocrypt[%d]:%X\n",i, tocrypt[i]);
        }
      return 0;
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    E:\home\test>gcc test.c
     
    E:\home\test>a.exe 12DF12F12125445F
    tocrypt[0]:12
    tocrypt[1]:DF
    tocrypt[2]:12
    tocrypt[3]:F1
    tocrypt[4]:21
    tocrypt[5]:25
    tocrypt[6]:44
    tocrypt[7]:5F
     
    E:\home\test>
    Merci encore pour le coup de pouce!! A bientot!
    TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/01/2012, 09h54
  2. Algo de création de titre pour document
    Par scaleo dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 14/10/2006, 09h09
  3. [pb de caractere] Conversion de caractères accentué pour url
    Par smyley dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 04/11/2005, 15h55
  4. Algo de positionnement de aprticule pour une boule de feu .
    Par Clad3 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 02/09/2005, 15h26
  5. [String] Encodage de caractères pour une sortie HTML
    Par elitost dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 10/11/2004, 08h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo