Qt quncompress gzip data

Me encuentro con un problema y no puedo encontrar una solución.

Entonces, lo que quiero hacer es descomprimir datos en qt, usando qUncompress (QByteArray), enviar desde www en formato gzip. Utilicé wireshark para determinar que este es un flujo gzip válido, también probado con zip / rar y ambos pueden descomprimirlo.

Código hasta ahora, es así:

    static const char dat[40] = {
         0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xaa, 0x2e, 0x2e, 0x49, 0x2c, 0x29,
         0x2d, 0xb6, 0x4a, 0x4b, 0xcc, 0x29, 0x4e, 0xad, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00,
         0x2a, 0x63, 0x18, 0xc5, 0x0e, 0x00, 0x00, 0x00
    };
//this data contains string: {status:false}, in gzip format
QByteArray data;
           data.append( dat, sizeof(dat) );

unsigned int size = 14; //expected uncompresed size, reconstruct it BigEndianes

//prepand expected uncompressed size, last 4 byte in dat 0x0e = 14
QByteArray dataPlusSize;

dataPlusSize.append( (unsigned int)((size >> 24) & 0xFF));
dataPlusSize.append( (unsigned int)((size >> 16) & 0xFF));
dataPlusSize.append( (unsigned int)((size >> 8) & 0xFF));
dataPlusSize.append( (unsigned int)((size >> 0) & 0xFF));

QByteArray uncomp = qUncompress( dataPlusSize );
qDebug() << uncomp;

Y la descompresión falla con: qUncompress: Z_DATA_ERROR: los datos de entrada están dañados.

AFAIK gzip consta de encabezado de 10 bytes, peyload DEFLATE, avance de 12 bytes (CRY32 de 8 bytes + ISIZE de 4 bytes - tamaño de datos sin comprimir). El encabezado y el tráiler de rayas deberían dejarme con flujo de datos DESINFLADO, qUncompress produce el mismo error.

Lo comprobé con una cadena de datos comprimida en PHP, como esta:

$stringData = gzcompress( "{status:false}", 1);

y q Descomprimir descomprime esos datos (aunque no vi el encabezado gzip, es decir, ID1 = 0x1f, ID2 = 0x8b) Verifiqué el código anterior con depuración y se produce un error en:

        if (
        #endif
            ((BITS(8) << 8) + (hold >> 8)) % 31) { //here is error, WHY? long unsigned int hold = 35615
            strm->msg = (char *)"incorrect header check";
            state->mode = BAD;
            break;
        } 

inflate.c línea 610.

Sé que qUncompress es simplemente un contenedor para zlib, así que supongo que debería manejar gzip sin ningún problema. Cualquier comentario es más que bienvenido.

Atentamente

Respuestas a la pregunta(3)

Su respuesta a la pregunta