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

Python Discussion :

Utilisation de struct.unpack avec un nombre de bytes non standard


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 92
    Points : 38
    Points
    38
    Par défaut Utilisation de struct.unpack avec un nombre de bytes non standard
    Bonjour,
    J'ai un fichier binaire qui contient différentes données de différentes taille.
    Il n'y a pas de caratére de separation entre chaque nombre.
    Lorsque le nombre à récupérer est de taille standard 1 ou 4 bytes, pas de soucis en utilisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fid = open(PathFile, 'rb')
    Val1Byte = struct.unpack('B', fid.read())
    Val4Bytes = struct.unpack('I', fid.read(4))
    fid.close()
    Mais lorsque le nombre de bytes est de 3, 6 ou autre, je n'arrive pas à le lire correctement.
    Auriez vous une idée?
    Merci d'avance.
    Julien

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par astragoth Voir le message
    Mais lorsque le nombre de bytes est de 3, 6 ou autre, je n'arrive pas à le lire correctement.
    Auriez vous une idée?
    f.read(3) ou f.read(6) retournent respectivement 3 et 6 bytes.... donc çà lit correctement.
    Après ça serait mieux de préciser ce que vous cherchez à en faire via struct.unpack...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 92
    Points : 38
    Points
    38
    Par défaut
    Mon but étant de récupérer mon nombre codé sur 3 ou 6 bytes (3 ou 6 x 8bits)
    J'utilise unpack pour convertir un ensemble de bytes en nombre entier

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par astragoth Voir le message
    Mon but étant de récupérer mon nombre codé sur 3 ou 6 bytes (3 ou 6 x 8bits)
    J'utilise unpack pour convertir un ensemble de bytes en nombre entier
    Ca va mieux de le dire...
    Vous pouvez ajouter un byte b'\x00' à droite ou à gauche suivant l'endian-ness aux trois bytes (çà en fait 4 et çà vous savez convertir...).
    Avec Python3, nous avons aussi la solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> int.from_bytes(b'\x00\x00\x01', 'big')
    1
    >>> int.from_bytes(b'\x00\x00\x01', 'little')
    65536
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/10/2016, 14h47
  2. [XL-2007] Utilisation d'une cellule avec un "-" à droite du nombre
    Par Blacktizen dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/02/2015, 16h57
  3. utiliser UNION avec un nombre de colonnes non égal
    Par swissmade dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 20/08/2007, 11h03
  4. Réponses: 3
    Dernier message: 05/09/2006, 00h47
  5. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08

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