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

Programmation et administration système Perl Discussion :

Incrémenter de l'hexa


Sujet :

Programmation et administration système Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2008
    Messages : 130
    Points : 53
    Points
    53
    Par défaut Incrémenter de l'hexa
    Bonjour à tous!

    Voila je suis débutant en Perl et je dois faire un genre d'interpréteur de trace blablabla ... :p

    Et en fait je dois récupérer des constantes situées dans un fichier *.h

    Donc j'ai un début de script qui extrait ces dernieres et je dois leur affecter leur valeur via le script

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    open FICHIER,"< app_spi.h" or die "Le fichier n'existe pas !";
    while ($ligne = <FICHIER>)
       {
          if($ligne =~ m/  (SPI_)/ )
             {    
                print WRITER $ligne;        	
             }      
       }
    close FICHIER;
    Donc la je veux extraire toutes les constantes commencant par SPI_ puis afficher leur valeur a coté mais je ne trouve pas comment faire :S

    j'ai bien tenté cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    my $valeur = 0x82;
    my $dec = sprintf("%d",$valeur);
     
    if($ligne =~ m/  (SPI_)/ )
             {    
                $dec++; 
                $valeur = hex($dec);   
             	print WRITER $valeur;         	
             	print WRITER $ligne;        	
             }
    Mais ca ne fonctionne pas. du moins il incrémente de 305 à 337 au lieu de 0x82 à 0xA3.

    Merci d'avance pour votre aide.

    Cordialement

    Fabien

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu confonds pas mal de choses... hex() passe d'une chaîne de caractère en hexa vers un entier, pas l'inverse ; 0x82 est déjà reconnu par Perl comme un nombre en hexa, inutile d'utiliser sprintf().

    Si j'ai bien compris ce que tu veux faire, le code suivant devrait marcher (mais je ne suis pas trop sûr de comprendre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    open my($h_file), '<', 'app_spi.h'
      or die "Ouverture app_spi.h : $!";
     
    my $val = 0x82;
     
    while(<$h_file>){
      chomp;
      if(m/  (SPI_)/){
        printf WRITER "$_ %x\n", $val++;
      }
    }
     
    close $h_file;
    --
    Jedaï

Discussions similaires

  1. Incrémentation d'un champ de la table
    Par viny dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/09/2003, 20h33
  2. [débutant] conversion int en hexa
    Par sergoid dans le forum C++Builder
    Réponses: 6
    Dernier message: 16/05/2003, 11h11
  3. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19
  4. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  5. Post incrémentation?
    Par Defrag dans le forum C
    Réponses: 4
    Dernier message: 08/10/2002, 10h36

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