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

VB.NET Discussion :

Compression de chaine de caractères avec GZip


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1
    Par défaut Compression de chaine de caractères avec GZip
    Bonjour à tous.

    Voici le problème auquel je suis confronté. Je dois Compresser une chaine de caractères Depuis une application développée en VB.NET Framework 3.5, qui sera décompressée et interprétée depuis une application codée en PHP, via l'algorithme GZip.

    En théorie aucun problème. Je dispose d'un exemple de chaine normale et compressée en PHP à l'aide de GZip (que je reproduis avec un code PHP perso), mais je ne parviens pas à trouver le même résultat sous VB.NET.

    J'ai trouvé un bloc de code sur le net qui est le suivant et qui me sert pour mes tests en .NET:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim buf() As Byte = Encoding.UTF8.GetBytes(Text)
            Dim memoryStream As New MemoryStream()
            Dim returnValue As String = ""
            Using gstream As New GZipStream(memoryStream, CompressionMode.Compress, True)
                gstream.Write(buf, 0, buf.Length)
            End Using
            memoryStream.Position = 0
            Dim compressedData(CInt(memoryStream.Length)) As Byte
            memoryStream.Read(compressedData, 0, compressedData.Length)
            Dim gZipBuffer(compressedData.Length + 4) As Byte
            Buffer.BlockCopy(compressedData, 0, gZipBuffer, 4, compressedData.Length)
            Buffer.BlockCopy(BitConverter.GetBytes(buf.Length), 0, gZipBuffer, 0, 4)
            returnValue = Convert.ToBase64String(gZipBuffer)
    Pour info et exemple voici un jeu d'essai de mes résultats:
    Chaine initiale : 0x0200010000000000000000000100010002000100020002000000000000FA00FA00000001800100F4015E01000001800100E803C201000001800100
    Codee en GZip depuis PHP : ?3?0020004??Pl?D!+ps?`?j ?*7CSW?yP1W cg#T1? gjx
    Codée en GZip depuis .NET : eAAAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyJ23u3s7ezs7O70n139v/l+T/9vn2fH8n9pfcCtnu3v7N4/VXj62enBzr2TvfCz/wexDWdqeAAAAAAA
    L'un d'entre vous aurait-il un élément de réponse ou une piste à me fournir pour m'aiguiller? Merci d'avance et bonne journée!

  2. #2
    Membre chevronné
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Par défaut
    L'encodage en 64 bits (dernière ligne) est volontaire ?

    Je suppose que ce qui vous intéresse est gZipBuffer, pas Convert.ToBase64String(gZipBuffer)... Non ?

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    0x0200010000000000000000000100010002000100020002000000000000FA00FA00000001800100F4015E01000001800100E803C201000001800100
    ceci peut aussi être de l'hexadecimal
    et donc déjà soit tu le traites en string, soit tu le remets en binaire pour ensuite avoir l'équivalent en string, et là aussi des octets vers un string, il y a plusieurs encodages

    il faut déja partir de la même chose dans les 2 cas, il nous faudrait donc le code php je pense (et quelqu'un qui sait le lire )
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [PL/SQL] Chaine de caractères avec une quote
    Par Titouf dans le forum Oracle
    Réponses: 2
    Dernier message: 15/05/2006, 14h36
  2. Dégradé sur une chaine de caractères avec 3 a 4 couleurs
    Par avogadro dans le forum Composants VCL
    Réponses: 6
    Dernier message: 31/03/2006, 13h21
  3. Reception chaine de caractère avec recvfrom()
    Par innosang dans le forum C
    Réponses: 5
    Dernier message: 31/12/2005, 14h51
  4. Lecture d'une chaine de caractère avec fgets
    Par mayoouketchup dans le forum Langage
    Réponses: 9
    Dernier message: 22/12/2005, 16h17
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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