2010-08-04 2 views
0

У меня есть программа D с Tango, и я пытаюсь распаковать строку gzipped. К сожалению, у меня нет потока A, но сжатые данные хранятся в char[]. Как я могу распаковать его с помощью tangos tango.io.compress.ZlibStream? Мне нужны еще char[] с несжатыми данными.Как читать объект char [] в tango.io.compress.ZlibStream?

Я пробовал это часами. Я не очень хорошо знаком с танго.

Спасибо

Edit: мой код выглядит примерно так:

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 

ответ

0

хорошо, фигу. Похоже, парень, который разработал этот формат файла, сжал данные, прежде чем он закодировал его с base64. Я попытался распаковать все кодированные данные base64.

Когда я декодировал строку с base64 и использовал gzip в результирующем массиве ubyte, он сделал трюк!

извините за это.