Вопрос: C ++ Декомпрессия массива gzip из байтов


Вот полная ситуация: я работаю над устройством для чтения карт .tmx файлов, из плитки. В большинстве случаев плитки сохраняются в base64 string, которая содержит массив байтов, сжатый gzip, Прямо сейчас я могу прочитать массив сжатых байтов, но я понятия не имею, как его распаковать. Я прочитал несколько документов о zlib а также boost, но оба были связаны с файловыми потоками и очень сложными ...

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


4


источник


Ответы:


#include <fstream>
#include <iostream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/gzip.hpp>

int main() 
{
    using namespace std;

    ifstream file("hello.gz", ios_base::in | ios_base::binary);
    filtering_streambuf<input> in;
    in.push(gzip_decompressor());
    in.push(file);
    boost::iostreams::copy(in, cout);
}

Я не уверен, что сложно или сложно, если смотреть на приведенный выше пример, взятый из http://www.boost.org/doc/libs/1_36_0/libs/iostreams/doc/classes/gzip.html , Декомпрессия очень проста. Перед распаковкой убедитесь, что вы декодируете base64. ( Как кодировать (декодировать) base64 в C?  должен помочь вам)


6