msgpack使用zlib壓縮資料

2021-07-29 19:41:05 字數 2124 閱讀 4911

原創:

注:靜態庫只需要編譯zlibstat, dll只需要編譯zlibvc

4.建立新的工程包含 「msgpack.hpp」 和 「zlib.h」 新增前面的生成的兩個lib

嘗試使用msgpack的壓縮類zbuffer,在msgpack.hpp檔案裡面新增 #include 「msgpack/zbuffer.hpp」 和#include 「msgpack/zbuffer.h」

實測序列化壓縮可以,沒找到解壓還原的方法…尷尬

最後採用sbuffer類

pack->壓縮->二進位制儲存

二進位制讀取->解壓縮->upack

貼**:

#include "stdafx.h"

#include "zlib.h"

#include "iostream"

#include "msgpack.hpp"

#include "fstream"

using

namespace

std;

unsigned

char src[999999];

unsigned

char strdst[999999];

unsigned

char buf[999999];

int main()

//序列化完成

// std::ofstream of_2("t2.dat",std::ios::binary);

// of_2.write(buffer_.data(),buffer_.size());

// of_2.close();

std::ofstream of_("t1.dat",std::ios::binary);

unsigned

char *p=new

unsigned

char[buffer_.size()+1];

cout

long buflen = sizeof(buf);

memcpy(p,buffer_.data(),buffer_.size());

compress(buf, &buflen,p,buffer_.size());壓縮完成

of_.write((const

char*)buf,buflen);

of_.close();//寫資料完成

delete p;

buffer_.release();

std::ifstream is("1.dat",std::ios::binary);//讀資料

is.seekg (0, is.end);

int n = is.tellg();

is.seekg (0, is.beg);

char *pp=new

char[n+1];

is.read((char*)pp, n);

msgpack::unpacker unpack_;

memcpy(src,pp,n);

unsigned

long dstlen = sizeof(strdst);

int nu = uncompress(strdst, &dstlen, src, n);//解壓

unpack_.reserve_buffer(dstlen);

memcpy(unpack_.buffer(),strdst,dstlen);

unpack_.buffer_consumed(dstlen);

msgpack::unpacked result_;//unpack

while (unpack_.next(result_))

system("pause");

return

0;}

注:引入zlib庫在編譯工程時候要新增預處理 zlib_winapi

報錯error lnk2026: 模組對於 safeseh 映像是不安全的,解決辦法在工程配置屬性,配置屬性,聯結器,命令列新增「/safeseh:no 」

測試至此做個記錄。

原創:

zlib(非流壓縮)

wget tar xvzf zlib 1.2.3.tar.gz cd zlib 1.2.3.tar.gz configure make sudo make install安裝好之後,就可以用了 zlibmgr.h 檔案 ifndef zlibmgr define zlibmgr define max...

C 工程下使用zlib壓縮演算法

c 使用zlib壓縮演算法。2.雙擊 src zlib 1.2.3 zlib 1.2.3 projects visualc6 zlib.dsw用vs開啟 3.用lib release對zlib工程進行編譯 如需要改變編譯選項,則需要與要包含此lib的工程的編譯選項一致 4.編譯時有可能報錯,建立檔案...

PHP使用zlib實現頁面的gzip壓縮輸出

php中的gzip gnu zip 是一種壓縮技術。經過gzip壓縮後頁面大小可以變為原來的30 甚至更小。這樣使用者瀏覽的時候就會感覺很快。要實現gzip壓縮頁面需要瀏覽器和 伺服器共同支援,實際上就是伺服器壓縮,傳到瀏覽器後瀏覽器解壓並解析。瀏覽器那邊不需要我們擔心,因為現在絕大多數瀏覽器都支援...