En mémoire de décompression avec zlib
Puis-je lire un zlib fichier compressé en mémoire sans l'extraire sur le disque? Il serait bien si vous pouviez fournir un extrait.
zlib.net/zlib_how.html
avez-vous essayé quelque chose de vous-même? juste un conseil: "veuillez indiquer le code" est une mauvaise façon de demander de l'aide. personne ne veut faire votre travail pour vous gratuitement, mais les gens ne veulent vous aider à résoudre un problème que vous ne pouvez pas comprendre vous-même. mot votre question de cette façon à obtenir de meilleurs résultats.
Vous recevrez plus de vous aider si vous faites une tentative et puis montrez-nous où vous êtes coincé. Si vous êtes coincé sur où commencer, vous pouvez l'indiquer dans votre question avec quelques idées que vous envisagez.
Il serait agréable d'être payé pour faire le travail au lieu de vous 😉
avez-vous essayé quelque chose de vous-même? juste un conseil: "veuillez indiquer le code" est une mauvaise façon de demander de l'aide. personne ne veut faire votre travail pour vous gratuitement, mais les gens ne veulent vous aider à résoudre un problème que vous ne pouvez pas comprendre vous-même. mot votre question de cette façon à obtenir de meilleurs résultats.
Vous recevrez plus de vous aider si vous faites une tentative et puis montrez-nous où vous êtes coincé. Si vous êtes coincé sur où commencer, vous pouvez l'indiquer dans votre question avec quelques idées que vous envisagez.
Il serait agréable d'être payé pour faire le travail au lieu de vous 😉
OriginalL'auteur Vineel Kumar Reddy | 2011-02-04
Vous devez vous connecter pour publier un commentaire.
Voici un zLib gonfler routine qui prend un tampon en mémoire et décompresse dans la condition de sortie de la mémoire tampon. C'est un "one-shot" de la fonction, dans ce qu'elle tente de gonfler l'ensemble de la mémoire tampon d'entrée tout à la fois, et suppose que vous avez donné assez d'espace pour s'adapter à tout cela. Il est également possible d'écrire un multi-fonction photo dynamique qui pousse le tampon de destination en tant que de besoin.
Explication:
src: la source de la mémoire tampon contenant de la compression (gzip ou zlib) données
srcLen: la longueur de la source de la mémoire tampon
l'heure d'été: le tampon de destination, dans lequel la sortie est écrite
dstLen: la longueur de la mémoire tampon de destination
Les valeurs de retour:
Z_BUF_ERROR: si dstLen n'est pas assez grand pour s'adapter à l'inflation des données
Z_MEM_ERROR: si il n'y a pas suffisamment de mémoire pour exécuter la procédure de décompression
Z_DATA_ERROR: si l'entrée de données a été corrompue
Sinon, la valeur de retour est le nombre d'octets écrits à l'heure d'été.
Salut, peut-être vous pouvez élaborer un peu plus sur la façon de convertir cette fonction multi-shot, et d'allouer dynamiquement de la mémoire pour le décompressé fonction. un exemple de code serait le mieux 🙂 merci
OriginalL'auteur Raj Advani
Oui, vous le pouvez; zlib est couramment utilisé dans les systèmes embarqués pour décompresser une image d'application à partir de la ROM en RAM - un entièrement mémoire-fonctionnement de la mémoire.
Zlib documentation décrit les appels nécessaires.
Je dirais que la documentation est au-dessus de la normale pour un projet open source. Il était certainement suffisante pour me permettre de faire ce que j'ai décrit (ainsi que l'écriture de l'outil de compression pour générer la charge des fichiers), sans soutien supplémentaire. Il est vrai qu'il ne décrit pas tous les possible scénario d'utilisation, mais il est une bibliothèque, pas une application. Certains ne sont pas déraisonnables niveau de capacité technique qui est attendu de l'utilisateur.
OriginalL'auteur Clifford
Solution fournie par Raj Advani ne fonctionne pas pour multistream zlib tampon. Solution pour gzip données:
https://github.com/uvoteam/gunzip_mmap
OriginalL'auteur Alex