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

Langage Perl Discussion :

extractions de bit dans un octet


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 8
    Par défaut extractions de bit dans un octet
    Bonjour,

    Je dois extraire un octet d'un fichier et traiter les 6 1er bits en partant du bit haut.
    Je dois ensuite afficher sous sa forme décimale la valeur qui correspond aux 6 bits..

    Par exemple si $octet vaut 112 (0x70)

    112 = 01110000

    Les 6 1Er bits = 011100 = 00011100 = 28 (0x1C)

    dans cet exemple je veux donc afficher 28 ...

    voici mon code qui fonctionne mais c'est lourdingue ... Peut- on faire plus simple ??


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my $octet=substr($fichier,$offset, 1); 
    my $v=pack('C',ord($octet));
    my  $w=unpack("B6", $v);
    my $resu=ord( pack('B8',"00" . $w));
    print $resu;

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 184
    Par défaut
    Perl propose les opérateurs binaires de décalage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $a = 112;
    my $b = $a >> 2; # Decalage de deux bits vers la droite
    print $b."\n"; # Affiche 28

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 8
    Par défaut
    Respect ..

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

Discussions similaires

  1. Coder 4 groupes de 6 bits dans 3 octets
    Par Cheepy dans le forum C++
    Réponses: 9
    Dernier message: 02/04/2015, 09h51
  2. Lire plusieurs bits consécutifs dans un octet.
    Par BasicZX81 dans le forum VB.NET
    Réponses: 3
    Dernier message: 21/08/2013, 01h05
  3. Ecriture d'un seul bit dans un fichier
    Par fantomasmusic dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 31/01/2005, 19h21
  4. [Débutant][RISC]Compter le nombre de bit à 1 dans un octet ?
    Par Pill_S dans le forum Autres architectures
    Réponses: 7
    Dernier message: 23/12/2004, 23h24
  5. [32 bits] Décaler les octets d'un registre
    Par Kef dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 22/06/2004, 23h09

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