J'ai un beau buffer mais sais pas le lire :)

Hello,

J'ai rempli un beau buffer mais je sais pas trop comment récupérer ce qu'il y a dedans (c'est un fichier XML)

le code ici: https://github.com/Old-Geek/Librairie/blob/master/Librairie/Model/MiniZip.m#L68

Il est déclaré à la ligne 93

Réponses

  • Le plus simple c'est d'écrire toutes les données dans un fichier temporaire texte .xml
    et extraire les données avec la classe NSXMLParser

  • mai 2019 modifié #3

    Oula, c'est trop facile ça, le but du jeu est de ne pas accéder au HDD pour si peu (1 à 2Ko maximum).

    Je veux juste récupérer le texte brut, j'ai déjà un pseudo parser.

    Le problème c'est que là, c'est pas du binaire ni de l'hexa, juste des chars de ce genre: ïÀ\^B

  • LexxisLexxis Membre

    NSData peut être ?

  • mai 2019 modifié #6

    J'en suis surtout à me demander si c'est pas le fichier compressé

    «\^R0°%«ÿ\^?Àοïþ\^?£„.xÿ\^?«\^R@Ï¿ïþ\^?.2.xÿ\^?\^Tàö\^D\^Aÿ\^?\^A \^[$ \^[$ \^[$0Ï¿ïþ\^?\^Ï\^A@Ï¿ïþ\^? \^[$€Ï¿ïþ\^?Tì\^AÐ¿ïþ\^?\^Dàö\^D\^D\^Dàö\^D\^AÏ¿ï\^DÐ¿ïþ\^?àö\^D\^Aàö\^D\^DÀÏ¿ïþ\^?€ëÅÐÏ¿ïþ\^?-Ã\^APпïþ\^?€ëÅàö\^D\^BPпïþ\^?€ëŅ¦\^B\^Pпïþ\^?»Ï\^A€ëŀëÅ\^BPпïþ\^?€ëŠпï\^Bпïþ\^?}Ð\^Aпïþ\^?\^P\^B\^Bpпïþ\^?€ëŀëŀëÅ\^A&€ëÅ\^A€ëŀëÅ\^Xø‘\^B\^A€ëŀëÅ0ø‘\^B\^A(€ëŀëÅ°Ñ¿ïþ\^?,\^_\^A\^A Ñ¿ïþ\^?àö\^D\^A\^WÜA\^Càö\^D\^AÀ÷‘\^B\^A('\^NòÀ\^Bü\^Dux\^X«>­NPK\^A\^B€ëÅÀ÷‘\^B\^AòÀ\^BòÀ\^BàÑ¿ïþ\^?ÇJ\^A\^AÀ÷‘\^B\^AÀ÷‘\^B\^AµO\^F\^PÒ¿ïþ\^?:K\^A\^AÀ÷‘\^B\^A8pü\^D\^AÀ÷‘\^B\^A£c\^A@Ò¿ïþ\^?Wc\^A\^Apü\^Dpü\^D\^Apü\^D\^A°ù°Ò¿ïþ\^?]\^A\^A0íŵO\^F€ëŁ{@xÐÒ¿ïþ\^?\^HN\^A\^Apü\^D\^Alþ\^?\^AÛy\^F\^A
    8\^G\^A\^A«Î\^PÓ¿ïþ\^?UL\^A\^AÀ÷‘\^B\^AÀ÷‘\^B\^Apü\^D\^Apü\^D\^A»_\^APÓ¿ïþ\^?£c\^A\^APÓ¿ïþ\^?‹õÝKpü\^D\^AˆÓ¿ïþ\^?pü\^D\^Apü\^DÐÓ¿ï

  • regarde dans le fichier https://github.com/nmoinvaz/minizip/blob/master/minizip.c
    peut etre que les données sont encryptés ?

    if (file_info->flag & MZ_ZIP_FLAG_ENCRYPTED)

  • mai 2019 modifié #8

    Non, c'est pas ça

    -l 40 éléphants - tome 1.cbz
    Packed Unpacked Ratio Method Attribs Date Time CRC-32 Name
    ------ -------- ----- ------ ------- ---- ---- ------ ----
    672 1114 60% Defl:N 81a40000 05-13-19 07:53 4f5dc22a comicinfo.xml

    Si je colle ça en NSdata et que j'écris le fichier ça le fait pas non plus, convertir le data en string me donne toujours un null

    Si encore file_info->uncompressed_size; ne me donnait pas la bonne taille du fichier je pourrais douter mais c'est même pas le cas.

  • LarmeLarme Membre

    Si je colle ça en NSdata et que j'écris le fichier ça le fait pas non plus, convertir le data en string me donne toujours un null

    Euh, un peu d'explications là-dessus ? Car ce n'est pas parce que tu as un NSData, qu'en faisant [[NSString alloc] initWithData:theData encoding: NSString8TFStringEncoding] que cela te donnera toujours un string non-nil.
    L'exemple simple est Image => JPEGData, transformer ça en String.

  • mouaip, en tout cas c'est bizarre, j'ouvre l'archive, j'obtiens la taille précise de mon fichier mais dès que je veux l'obtenir ça me dit mz_zip_entry_is_open(handle) != MZ_OK

    Je l'aurais ! :p

  • Si tu "dézippes" manuellement l'archive, le fichier XML est-il lisible ?

  • J'attaque un wrapper simplifié à coté pour faire ça au propre, ça sera plus simple pour m'y retrouver plus facilement

  • Mouaip, suis pas du genre à abandonner mais là... j'ai tout fait à la mano avec la version de minizip qui me lit bien mes infos, je prend la dernier version sans changer d'un poil et ça refuse de me lire mon fichier.

    J'en conclu que c'est cette @$ de lib qui est complètement bug. Y'a 0 doc, aucune info sur comment utiliser la lib et quand tu prends les fichiers exemple en recopiant bêtement ça refuse toujours d'ouvrir un fichier directement en mémoire.

    Sur ce reboot, y'a la dernier mise à jour qui fait perdre juqu'à 40% de performance du CPU qui est arrivé :)

  • \o/

    ---> https://libzip.org propre, claire, très bien documenté, fonctionne à la perfection

    minizip = gros caca mou kipu :p bugué de partout, doc inexistante, code tout tordu et flou, résultat parfois aléatoire... 2 jours de perdu à essayer de comprendre pourquoi ça fonctionnait pas :(

Connectez-vous ou Inscrivez-vous pour répondre.