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 :

Additionner tout les bytes d'une structure


Sujet :

C

Vue hybride

Pikwik Additionner tout les bytes... 31/05/2006, 17h21
Menontona Tu confond pas Byte et bit ? ... 31/05/2006, 17h53
Pikwik non j'ai bien di Bytes ( >= à... 31/05/2006, 17h57
DaZumba Pour des raisons de... 31/05/2006, 18h13
gege2061 Peut être que ceci pourra... 31/05/2006, 18h36
Pikwik Sympa comme tuto. Je le met... 01/06/2006, 08h43
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de Pikwik
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 237
    Par défaut Additionner tout les bytes d'une structure
    je doit effectuer un checksum.

    j'ai la structure suivante :
    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
    typedef struct charHeader {
        char name            [100];
        char mode            [8  ];
        char uid               [8  ];
        char gid               [8  ];
        char size              [12 ];
        char mtime           [12 ];
        char chksum         [8  ];
        char typeflag        [1  ];
        char linkname        [100];
        char magic           [6  ];
        char version         [2  ];
        char uname          [32 ];
        char gname          [32 ];
        char devmajor       [8  ];
        char devminor       [8  ];
        char prefix            [155];
        char empy            [12 ];
    } charHeader;
    Je doit ajouter chaque Bytes de cette structure, en prenant chaque bytes comme un unsigned int.

    j'ai essayé (sans succès) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    charHeader buffer;
    int chksum = 0;
    char *pPointer = &buffer;
    for(i=0; i < sizeof(buffer); i++) {
            chksum += (unsigned int)*pPointer++;
    }
    Mais vu la valeur c'est correct. Une idée ?

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 100
    Par défaut
    Tu confond pas Byte et bit ?
    Byte c'est octet en anglais c-a-d 8 bits

  3. #3
    Membre expérimenté Avatar de Pikwik
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 237
    Par défaut
    non j'ai bien di Bytes ( >= à 8 bits)

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Pour des raisons de performance, les compilateurs ajoutent des bytes de padding aux structures (a moins de leur interdire explicitement). Si cela arrive, le sizeof de ta structure sera superieur a la valeur attendue. Pour garder un comportement souple, je conseillerai de faire le checksum en considerant les variables membres de la structure une par une.

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Peut être que ceci pourra t'aider : Tutoriel sur le calcul des CRC

  6. #6
    Membre expérimenté Avatar de Pikwik
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 237
    Par défaut
    Sympa comme tuto. Je le met en BookMark !


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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/01/2013, 08h38
  2. Toutes les colonnes d'une BDD
    Par mohamed dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/09/2004, 14h12
  3. [VBA-E] supprimer le contenu de toutes les cellules d'une feuille
    Par BipBip2 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/08/2004, 15h13
  4. Pb effacer toutes les tables d'une bd access
    Par madiam2004 dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/05/2004, 15h24
  5. Sélection de toute les tables d'une base
    Par lord_paco dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 21/07/2003, 14h56

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