Compression de données
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Compression de données



  1. #1
    invite67d34009

    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

    est le format de sortie souhaité est:

    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

    -----

  2. #2
    Jack
    Modérateur

    Re : Compression de données

    Tu as avec la variable "t" un pointeur qui pointe sur le premier octet de ton tableau. Il suffit de le lire et l'afficher ainsi que pour les nb - 1 suivants.

  3. #3
    invite67d34009

    Re : Compression de données

    ok je dois faire une boucle pour lire la ligne ?
    je suis en c avec le logiciel codeblocks

  4. #4
    Jack
    Modérateur

    Re : Compression de données

    Oui, dès qu'il y a un traitement répétitif, il faut une boucle, à priori un "for" vu qu'on connait le nombre d'itérations.

  5. A voir en vidéo sur Futura
  6. #5
    invite67d34009

    Re : Compression de données

    Code:
    void dump(unsigned char t[], int nb)
    {
        int i;
        printf("0000");
        for(i=0;i<15;i++)
        {
                printf("%h",t[i])
                nb++;
        }
        printf("\n");
    }
    voici mon code mais je n'obtiens pas : https://chat.developpez.com/upload/5...18e8/code.html
    Dernière modification par Jack ; 01/11/2018 à 13h52. Motif: Balises code et non pas quote

  7. #6
    Jack
    Modérateur

    Re : Compression de données

    Il faut utiliser les bonnes balises pour que le code soit correctement présenté.

    Bon, tu as dû afficher une ligne correctement en principe (ça aurait été bien de nous montrer le résultat plutôt que de nous le faire deviner).

    Il te reste à réitérer avec le bon nombre de lignes et en remplaçant ton "0000" par une variable vu que ce nombre va varier.

    Tu utilises (très) mal le paramètre nb: tu le modifies on ne sait pas trop pourquoi et tu ne te sers jamais de sa valeur. Pose-toi la question sur la fonction de ce paramètre et les conséquence sur l’affichage.
    Dernière modification par Jack ; 01/11/2018 à 13h58.

  8. #7
    invite67d34009

    Re : Compression de données

    Nom : 33.png
Affichages : 92
Taille : 2,6 Ko
    voilà ce que donne mon code pour l'instant

  9. #8
    Jack
    Modérateur

    Re : Compression de données

    La moindre des choses serait que tu nous montres également comment tu appelles la fonction. Ça me semble une évidence de connaitre la valeur des paramètres appelants pour se faire une idée.

  10. #9
    invite67d34009

    Re : Compression de données

    la fonction :
    void dump(unsigned char t[], int nb)
    {
    int i;
    printf("0000");
    for(i=0;i<15;i++)
    {
    printf("%h",t[nb]);
    }
    printf("\n");
    }
    le main:
    int main()
    {
    dump();
    }
    et j'obtiens :
    Nom : 33.png
Affichages : 76
Taille : 2,6 Ko

  11. #10
    Jack
    Modérateur

    Re : Compression de données

    Tu es sérieux?

    Tu demandes à faire un dump, mais tu ne dis pas de quoi. Crée un tableau dans la fonction main et passe-le en paramètre, ainsi de la taille de celui-ci.

  12. #11
    invite67d34009

    Re : Compression de données

    void dump(unsigned char t[], int nb)
    {
    int i,j;
    j=0;
    printf("0000");
    for(i=0;t[i]!=0;i++)
    {
    printf("%02x",t[i]);
    if(j==15)
    {
    printf("\n");
    printf("%04d",j);
    }
    }
    printf("\n");
    }
    j'ai fait celà et sa affiche

    Nom : 33.png
Affichages : 75
Taille : 2,8 Ko

  13. #12
    invite67d34009

    Re : Compression de données

    void dump(unsigned char t[], int nb)
    {
    int i,j;
    j=0;
    printf("0000");
    for(i=0;i<nb;i++)
    {
    printf("%02x",t[i]);
    if(j==15)
    {
    printf("\n");
    printf("%04d",j);
    }
    }
    printf("\n");
    }
    int main()
    {
    unsigned char toto[48]={0x00,0x01,0x02,0x03,0xFF,0xF E,0xFD,0x00};
    int bn;
    bn=48;
    dump(toto,bn);
    }
    résultat : Nom : 34.png
Affichages : 74
Taille : 2,7 Ko

  14. #13
    Jack
    Modérateur

    Re : Compression de données

    Balise CODE, pas QUOTE, comme déjà dit : éditeur avancé, puis le bouton #

    Code:
    if(j==15)
    A mon avis, ce n'est pas j qu'il fallait tester. On se demande d'ailleurs à quoi sert j.

    Tu travailles avec Code::Blocks. Il faudrait que tu utilises son débogueur. C'est très instructif pour observer les variables et tu aurais vu ton erreur en une minute.

  15. #14
    invite67d34009

    Re : Compression de données

    merci de ton aide j'ai réussi

Discussions similaires

  1. Compression de données binaires sans perte
    Par invite0f209ef9 dans le forum Programmation et langages, Algorithmique
    Réponses: 20
    Dernier message: 25/11/2016, 16h23
  2. Réponses: 3
    Dernier message: 10/01/2014, 23h07
  3. Compression des données ( Codage Huffman )
    Par invited467ddce dans le forum Logiciel - Software - Open Source
    Réponses: 14
    Dernier message: 22/04/2009, 15h12
  4. importation de données de excel dans R : données numériques non reconnues
    Par invitef67ae3c5 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/02/2009, 20h00