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

Qt Discussion :

Test si les données sont compressées


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Par défaut Test si les données sont compressées
    Bonjour,
    Je travaille actuellement sur un programme qui doit pouvoir prendre en entrée des données qui peuvent ou non être compressées. Dans la doc de qUncompress() on peut lire :

    Returns an empty QByteArray if the input data was corrupt.
    Ce qui est parfait pour ce que je veux faire, il me suffirait de tester le retour. Sauf que, si j'ai bien compris son fonctionnement, qUncompress prend les 4 premiers bytes du QByteArray passé en paramètre et alloue un tableau de cette taille. Pas de problème pour les données compressées mais si elle ne le sont pas cette taille peut donc monter jusqu'à 0xFFFFFFFF. J'ai remarqué que mon ordinateur a "un peu" de mal à gérer des tableaux de plusieurs milliards de bytes...

    D'où ma question, existe-t-il un moyen pour tester si les données que je reçois sont compressées ou pas ?

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Definol Voir le message
    Ce qui est parfait pour ce que je veux faire, il me suffirait de tester le retour. Sauf que, si j'ai bien compris son fonctionnement, qUncompress prend les 4 premiers bytes du QByteArray passé en paramètre et alloue un tableau de cette taille. Pas de problème pour les données compressées mais si elle ne le sont pas cette taille peut donc monter jusqu'à 0xFFFFFFFF.

    pourquoi il allouerait 4Go pour un fichier non compressé???

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Par défaut
    Parce que qCompress ajoute un en-tête de 4 bytes qui contient la taille des données non compressées et que qUncompress crée un tableau de la taille de ces 4 bytes sans aucune vérification des données.
    Si les données qu'on lui donne ne sortent pas de qCompress, les 4 premiers bytes ne sont plus ce header mais des données quelconques.

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    http://qt.developpez.com/doc/4.4/qby...y/#quncompress
    Note: If you want to use this function to uncompress external data compressed using zlib, you first need to prepend four bytes to the byte array that contain the expected length of the uncompressed data encoded in big-endian order (most significant byte first).

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Pour ajouter ce 4 byte, tu devrait pourvoir utiliser
    http://qt.developpez.com/doc/4.4/qtglobal/#qtobigendian

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Par défaut
    Ce n'est pas ce que je cherche à faire mais j'ai pu m'en sortir en mettant une taille limite aux données à décompresser.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/03/2008, 11h32
  2. Réponses: 1
    Dernier message: 13/01/2008, 21h02
  3. Réponses: 6
    Dernier message: 12/12/2007, 19h32
  4. Les données sont dans la base, mais ne s'affichent pas
    Par ryan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/03/2006, 10h59

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