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 :

Compression de données


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2017
    Messages : 47
    Points : 3
    Points
    3
    Par défaut Compression de données
    Bonjour,

    j'ai un tp à réalisé sur la compression et décompression de données.

    pour commencer on nous demandes de réaliser une fonction DUMP qui permet d'afficher en héxa le contenu d'un tableau d'octets. On écrit 16 octets par ligne et on fait commencer chaque ligne par le numéros du premier octet de la ligne en décimal. C'est donc un Dump d'un tableau d'octets

    et comme prototype, il nous donne :

    void dump(unsigned char t[], int nb);

    mon problème est que je ne comprends pas la fonction dump et ni l’algorithme de la fonction

  2. #2
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 375
    Points : 1 030
    Points
    1 030
    Par défaut
    Bonjour,

    En gros tu as un tableau 't' constitué de 'nb' octets, il faut les afficher en hexadécimal en en mettant 16 par ligne. Un peu ce que fait un éditeur hexa comme Ghex.

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2017
    Messages : 47
    Points : 3
    Points
    3
    Par défaut
    OK merci pour l'info
    mais as-tu une idée du code à faire pour réaliser cette fonction

  4. #4
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 375
    Points : 1 030
    Points
    1 030
    Par défaut
    • Une boucle sur tous les éléments du tableau
    • Un test pour savoir s'il faut revenir à la ligne
    • Un affichage avec printf() qui se chargera tout seul de l'affichage en hexa

    Ça fait déjà pas mal d'indices.

  5. #5
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2017
    Messages : 47
    Points : 3
    Points
    3
    Par défaut
    merci de tes indices, en temps que débutant je vais voir ce que je peux faire

  6. #6
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2017
    Messages : 47
    Points : 3
    Points
    3
    Par défaut
    1h30 a essayer de faire le code mais impossible
    j'ai fait une boucle dans une boucle pour tous lire mais nada

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par florian140001 Voir le message
    j'ai fait une boucle dans une boucle pour tous lire mais nada
    xdelatour ne t'a pas parlé de deux boucles imbriquées mais d'une (sous-entendu unique) boucle. Pour afficher les n octets d'un tableau d'octets il suffit de boucler sur chaque octet du tableau et l'afficher. C'est un concept qui me parait plutôt évident et donc qui devrait être évident pour toute apprenti développeur sensé avoir reçu assez de cours pour pouvoir faire cet exercice (même en tant que débutant) !!!

    En tout cas, deux choses sont certaines
    1. sans code à nous montrer on ne pourra pas t'aider des masses
    2. on n'écrira pas ton code à ta place
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2017
    Messages : 47
    Points : 3
    Points
    3
    Par défaut
    tu as totalement raison, vous n'avez pas à faire mon code
    je vous le montre dans le prochain poste

  9. #9
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2017
    Messages : 47
    Points : 3
    Points
    3
    Par défaut
    j'ai fait ceci:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    int main()
     
    {
     
    int file;
     
    file = open(fileName,O_BINARY|O_RDONLY);
     
    if ( file < 0 )
     
    { // failure
     
        return ( __LINE__ );
     
    }
     
    do
     
    {
     
        size = read ( file, data, 16 );
     
        for ( int i = 0; i < size; i++ )
     
        {
     
            printf ( "%02x ", data[ i ] );
     
        }
     
        printf ( "\n" );
     
    }
     
    while ( size==16 );
     
    close ( file );
     
    }
    sauf qu'on me demande un format comme ça :



    0000 78 56 74 10 10 10 10 10 41 78 fe 36 fd 00 00 00

    0016 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    0032 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    0048 00 00

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par florian140001 Voir le message
    sauf qu'on me demande un format comme ça :



    0000 78 56 74 10 10 10 10 10 41 78 fe 36 fd 00 00 00

    0016 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    0032 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    0048 00 00
    Moui. Et quelle différence y a-t-il entre ce que tu obtiens et ce qu'on te demande ?
    J'ai pas exécuté ton code mais il me semble à vue de nez que ça donnera cela
    78 56 74 10 10 10 10 10 41 78 fe 36 fd 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    Donc la seule différence, c'est qu'il manque le compteur en début de ligne. Et comment, avec les variables que tu as en main, peux-tu savoir que tu es en début de ligne ? N'y aurait-il pas à ce moment là une certaine variable qui vaut une certaine valeur que tu pourrais tester ? (tu remarqueras qu'on recolle ainsi avec les indices de xdelatour quand il parle de "test"...)

    Sinon quand tu veux écrire un code, alors . Si tu t'étais baladé sur le forum tu le saurais.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2017
    Messages : 47
    Points : 3
    Points
    3
    Par défaut
    Quand j'éxécute mon programme j'ai erreur

    j'utillise le logiciel codeblocks et il ne connait pas le file ainsi que size ni O_BINARY|O_RDONLY ainsi que data

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par florian140001 Voir le message
    et il ne connait pas le file
    Je pense que tu veux dire "fileName"...

    Citation Envoyé par florian140001 Voir le message
    ainsi que size ainsi que data
    Tu en es encore à faire pipi au pot l'analyste système ? Faut déclarer ses variables avant de les utiliser. C'est un détail sensé être acquis quand on commence les TP !!!

    Citation Envoyé par florian140001 Voir le message
    ni O_BINARY|O_RDONLY
    Faut inclure "fcntl.h" (c'est écrit dans la doc de "open()").

    Ah, au fait, j'ai exécuté ton code et on obtient bien ce que je disais. Mais vaut mieux remplacer le do {...} while (size == 16) par while ((size=read(...)) > 0) { ... }. Ca permet de 1) ne pas se focaliser sur "16" spécifiquement et 2) ne pas traiter inutilement un fichier vide.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2017
    Messages : 47
    Points : 3
    Points
    3
    Par défaut
    j'ai bien inclus #include <fcntl.h> et int data et size mais j'ai toujours le problème du file

  14. #14
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par florian140001 Voir le message
    Citation Envoyé par florian140001 Voir le message
    printf ( "%02x ", data[ i ] );
    j'ai bien inclus int data et size
    Mouais. T'es sûr que "data" c'est un int ???

    Citation Envoyé par florian140001 Voir le message
    mais j'ai toujours le problème du file

    Nan, ce serait évidemment trop facile si on avait le détail exact du problème que tu as avec "file". T'as raison, les challenges ça nous excite. Et trouver tout seul 1) et quel peut bien être ton problème avec "file" (problème que moi je n'ai pas quand je compile ton code !!!) et 2) comment le résoudre c'est trop trop excitant
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #15
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2017
    Messages : 47
    Points : 3
    Points
    3
    Par défaut
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    int main()
     
    {
     
    int file;
     
    file = open(fileName,O_BINARY|O_RDONLY);
     
    if ( file < 0 )
     
    { // failure
     
        return ( __LINE__ );
     
    }
     
    do
     
    {
     
        size = read ( file, data, 16 );
     
        for ( int i = 0; i < size; i++ )
     
        {
     
            printf ( "%02x ", data[ i ] );
     
        }
     
        printf ( "\n" );
     
    }
     
    while ( size==16 );
     
    close ( file );
     
    }
    voici les erreurs :
    Images attachées Images attachées  

  16. #16
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par florian140001 Voir le message
    Citation Envoyé par Sve@r Voir le message
    Je pense que tu veux dire "fileName"...
    mais j'ai toujours le problème du file
    voici les erreurs :

    Donc comme j'avais déjà dit, ce n'est pas la variable "file" qui pose souci mais la variable "fileName". Et encore une fois, on déclare ses variables avant de les utiliser !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  17. #17
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2017
    Messages : 47
    Points : 3
    Points
    3
    Par défaut
    je ne connait pas file name !

  18. #18
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par florian140001 Voir le message
    Citation Envoyé par florian140001 Voir le message
    j'ai fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int main()
    
    {
    
    int file;
    
    file = open(fileName,O_BINARY|O_RDONLY);
    
    ...
    }
    je ne connait pas file name !
    Impressionnant !!!
    Es-tu seul dans ton corps ?
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  19. #19
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 440
    Points : 43 082
    Points
    43 082
    Par défaut
    je ne connait pas file name !
    Ton compilateur non plus, il te le précise (cf les erreurs en #15)

    Vu le nombre d'erreurs, il faut les traiter une par une, surtout qu'il y en aura des inter-dépendantes.

    Et pourquoi utiliser open, utilises plutôt fopen. C'est moins bas niveau.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  20. #20
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    L'utilisation des appels systèmes open/read/write.. peut être retenue pour plusieurs raisons, lorsque l'on désire conserver le contrôle sur le buffering par exemple. Mais en effet il serait intéressant ici d'en connaître la raison ; à défaut il est préférable de s'en tenir aux fonctions de la bibliothèque standard, d'autant que l'on ne récupère qu'une très petite quantité de données à la fois.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [Algo] Compression de données
    Par GyZmoO dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 10/03/2007, 12h18
  2. Compresser les données avant insertion ?
    Par GregPeck dans le forum Outils
    Réponses: 2
    Dernier message: 07/08/2006, 16h09
  3. Compression de données
    Par mzt.insat dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 13/03/2005, 15h01
  4. Compression de données au format Zip avant sauvegarde
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/09/2004, 16h40
  5. compression de données du point de vue algorithmique
    Par GoldenEye dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 26/06/2002, 15h51

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