色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c gzip壓縮json

錢琪琛2年前7瀏覽0評論

  C語言中有許多壓縮算法,gzip算法是其中一個(gè)比較常用的算法。gzip算法可以將一段文本數(shù)據(jù)進(jìn)行壓縮,使其占用的空間減小,從而降低數(shù)據(jù)傳輸?shù)某杀尽T贑語言中,我們可以使用zlib庫進(jìn)行g(shù)zip壓縮操作。

  #include  #include  #include  #include  int main(int argc, char *argv[])
  {
    char *input = "{\"name\":\"Tom\",\"age\":20}";
    const int CHUNK = 16384;
    char out[CHUNK];
    z_stream strm;
    strm.zalloc = NULL;
    strm.zfree = NULL;
    strm.opaque = NULL;
    deflateInit2(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 + 16, 8, Z_DEFAULT_STRATEGY);
    strm.avail_in = strlen(input) + 1;
    strm.next_in = (Bytef *) input;
    do {
      strm.avail_out = CHUNK;
      strm.next_out = (Bytef *) out;
      deflate(&strm, Z_FINISH);
      fwrite(out, sizeof(char), CHUNK - strm.avail_out, stdout);
    } while (strm.avail_out == 0);
    
    deflateEnd(&strm);
    return 0;
  }

  以上是一個(gè)簡單的例子,代碼首先定義了一個(gè)字符串input,它是一個(gè)json格式的字符串。然后定義了一個(gè)緩沖區(qū)out,大小為16384字節(jié)。接下來定義z_stream結(jié)構(gòu)體,并初始化相關(guān)參數(shù)。

  在while循環(huán)中,先設(shè)置了緩沖區(qū)大小strm.avail_out為CHUNK,表示最大可以寫入CHUNK大小的數(shù)據(jù),然后執(zhí)行deflate函數(shù),將壓縮后的內(nèi)容寫入緩沖區(qū)out。

  循環(huán)的過程會(huì)反復(fù)執(zhí)行,直到緩沖區(qū)out沒有剩余空間可以寫入。最后釋放z_stream結(jié)構(gòu)體,程序運(yùn)行結(jié)束,輸出壓縮后的數(shù)據(jù)。