2010-08-04 10 views
0

J'ai un programme D avec Tango et j'essaye de décompresser une chaîne gzippée. Malheureusement, je n'ai pas de flux, mais les données compressées sont stockées dans un char[]. Comment puis-je le décompresser en utilisant des tangos tango.io.compress.ZlibStream? J'ai besoin d'un autre char[] avec les données non compressées.Comment lire un objet char [] dans un tango.io.compress.ZlibStream?

J'ai essayé cela pendant des heures maintenant. Je ne suis pas très familier avec le tango.

Merci

Edit: mon code ressemble à ceci:

char[] rawData; // decoded data goes here 
Array array = new Array(e.value[4..(e.value.length-3)]); // e.value is a char[] 
// array slice, castet to char[] is "H4sIAAAAAAAAA2NkYGBgHMWDBgMAjw2X0pABAAA=" 
// array.readable returns 40 (matches the above string) 
// decoded string is expected to be 33 repeatitions of "AQAAAAEAAAABAAAA" 
// followed by "AQAAAA==" 
auto reader = new ZlibInput(array); 
ubyte[1024] buffer; 
reader.read(buffer); // throws Z_DATA_ERROR 

Répondre

0
bien

, tant pis. Apparemment, le gars qui a conçu ce format de fichier a compressé les données, avant de les encoder avec base64. J'ai essayé de décompresser des données encodées en base64.

Lorsque j'ai décodé la chaîne avec base64 et utilisé gzip sur le tableau d'ubyte qui en résultait, ça a fait l'affaire!

désolé à ce sujet.